WaitToAsync improvements
This commit is contained in:
parent
fc4966c0dd
commit
8ead31eb4b
|
|
@ -2,16 +2,18 @@
|
||||||
{
|
{
|
||||||
public static class TaskHelper
|
public static class TaskHelper
|
||||||
{
|
{
|
||||||
public static bool WaitTo(Func<bool> predicate, int msTimeout = 10000, int msDelay = 5)
|
public static bool WaitTo(Func<bool> predicate, int msTimeout = 10000, int msDelay = 5, int msFirstDelay = 0)
|
||||||
=> WaitToAsync(predicate, msTimeout, msDelay).GetAwaiter().GetResult();
|
=> WaitToAsync(predicate, msTimeout, msDelay, msFirstDelay).GetAwaiter().GetResult();
|
||||||
|
|
||||||
public static Task<bool> WaitToAsync(Func<bool> predicate, int msTimeout = 10000, int msDelay = 5)
|
public static Task<bool> WaitToAsync(Func<bool> predicate, int msTimeout = 10000, int msDelay = 5, int msFirstDelay = 0)
|
||||||
{
|
{
|
||||||
return ToThreadPoolTask(async () =>
|
return ToThreadPoolTask(async () =>
|
||||||
{
|
{
|
||||||
var result = false;
|
var result = false;
|
||||||
var dtTimeout = DateTime.UtcNow.AddMilliseconds(msTimeout).Ticks;
|
var dtTimeout = DateTime.UtcNow.AddMilliseconds(msTimeout).Ticks;
|
||||||
|
|
||||||
|
if (msFirstDelay > 0) await Task.Delay(msFirstDelay);
|
||||||
|
|
||||||
while (dtTimeout > DateTime.UtcNow.Ticks && !(result = predicate()))
|
while (dtTimeout > DateTime.UtcNow.Ticks && !(result = predicate()))
|
||||||
await Task.Delay(msDelay).ConfigureAwait(false); //Thread.Sleep(msDelay);
|
await Task.Delay(msDelay).ConfigureAwait(false); //Thread.Sleep(msDelay);
|
||||||
|
|
||||||
|
|
@ -60,7 +62,9 @@
|
||||||
//public static void RunOnThreadPool(this Task task) => Task.Run(() => _ = task).Forget(); //TODO: Letesztelni, a ThreadId-kat! - J.
|
//public static void RunOnThreadPool(this Task task) => Task.Run(() => _ = task).Forget(); //TODO: Letesztelni, a ThreadId-kat! - J.
|
||||||
public static void RunOnThreadPool(this Action action) => ToThreadPoolTask(action).Forget();
|
public static void RunOnThreadPool(this Action action) => ToThreadPoolTask(action).Forget();
|
||||||
public static void RunOnThreadPool<T>(this Func<T> func) => ToThreadPoolTask(func).Forget();
|
public static void RunOnThreadPool<T>(this Func<T> func) => ToThreadPoolTask(func).Forget();
|
||||||
|
|
||||||
public static Task ToThreadPoolTask(this Action action) => Task.Run(action);
|
public static Task ToThreadPoolTask(this Action action) => Task.Run(action);
|
||||||
|
|
||||||
//public static Task ToThreadPoolTask(this Task task) => Task.Run(() => _ = task);
|
//public static Task ToThreadPoolTask(this Task task) => Task.Run(() => _ = task);
|
||||||
//public static void ToParallelTaskStart(this Task task) => task.Start();
|
//public static void ToParallelTaskStart(this Task task) => task.Start();
|
||||||
//public static Task<T> ToThreadPoolTask<T>(this Task<T> task) => Task.Run(() => task);
|
//public static Task<T> ToThreadPoolTask<T>(this Task<T> task) => Task.Run(() => task);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue