WaitToAsync improvements
This commit is contained in:
parent
fc4966c0dd
commit
8ead31eb4b
|
|
@ -2,16 +2,18 @@
|
|||
{
|
||||
public static class TaskHelper
|
||||
{
|
||||
public static bool WaitTo(Func<bool> predicate, int msTimeout = 10000, int msDelay = 5)
|
||||
=> WaitToAsync(predicate, msTimeout, msDelay).GetAwaiter().GetResult();
|
||||
public static bool WaitTo(Func<bool> predicate, int msTimeout = 10000, int msDelay = 5, int msFirstDelay = 0)
|
||||
=> 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 () =>
|
||||
{
|
||||
var result = false;
|
||||
var dtTimeout = DateTime.UtcNow.AddMilliseconds(msTimeout).Ticks;
|
||||
|
||||
if (msFirstDelay > 0) await Task.Delay(msFirstDelay);
|
||||
|
||||
while (dtTimeout > DateTime.UtcNow.Ticks && !(result = predicate()))
|
||||
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 Action action) => ToThreadPoolTask(action).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 Task task) => Task.Run(() => _ = task);
|
||||
//public static void ToParallelTaskStart(this Task task) => task.Start();
|
||||
//public static Task<T> ToThreadPoolTask<T>(this Task<T> task) => Task.Run(() => task);
|
||||
|
|
|
|||
Loading…
Reference in New Issue