public static async Task Run(this IsAsyncRunning isAsyncRunning, Action sync, Func <Task> asyncFunc) { if (isAsyncRunning.IsAsync) { await asyncFunc(); } else { sync(); } }
public static async Task Foo(IsAsyncRunning isSync) { var curent = Thread.CurrentThread.ManagedThreadId; for (int i = 0; i < 100; i++) { var query = 0; await isSync.Run(GetIntSync, GetInt); if (curent != Thread.CurrentThread.ManagedThreadId) { var dddd = 0; } } }
public static async Task <T> Run <T>(this IsAsyncRunning isAsyncRunning, Func <T> sync, Func <Task <T> > asyncFunc) { return(isAsyncRunning.IsAsync ? await asyncFunc() : sync()); }