public async Task RunTask(Func <Task> func) { DispatcherHandle handle = new DispatcherHandle(func); await Run(handle); await(Task) handle.Result; }
public async Task <TResult> RunTask <TResult>(Func <Task <TResult> > func) { DispatcherHandle handle = new DispatcherHandle(() => func()); await Run(handle); return(await(Task <TResult>) handle.Result); }
private async Task Run(DispatcherHandle handle) { await runQueueSem.WaitAsync().ConfigureAwait(false); try { await handler.Run(handle); } finally { runQueueSem.Release(); } }
public async Task Run(DispatcherHandle handle) { try { currentHandle = handle; runTriggerSem.Release(); await resultTriggerSem.WaitAsync().ConfigureAwait(false); if (currentHandle.Exception != null) { throw currentHandle.Exception; } } finally { currentHandle = null; } }
public async Task Run(Action action) { DispatcherHandle handle = new DispatcherHandle(action); await Run(handle); }