private static async Task WaitForCompletionAsync( MouseNotOverManagedWaitHandle mouseNotOverManagedWaitHandle, WaitHandle durationPassedWaitHandle, WaitHandle actionClickWaitHandle) { await Task.WhenAny( Task.Factory.StartNew(() => { WaitHandle.WaitAll(new[] { mouseNotOverManagedWaitHandle.WaitHandle, durationPassedWaitHandle }); }), Task.Factory.StartNew(actionClickWaitHandle.WaitOne)); }
private static Task WaitForCompletionAsync( MouseNotOverManagedWaitHandle mouseNotOverManagedWaitHandle, WaitHandle durationPassedWaitHandle, WaitHandle actionClickWaitHandle) { return(Task.Factory.ContinueWhenAny( new[] { Task.Factory.StartNew(() => { WaitHandle.WaitAll(new[] { mouseNotOverManagedWaitHandle.WaitHandle, durationPassedWaitHandle }); }) }, t => Task.Factory.StartNew(actionClickWaitHandle.WaitOne))); }
private static async Task WaitForCompletionAsync( MouseNotOverManagedWaitHandle mouseNotOverManagedWaitHandle, EventWaitHandle durationPassedWaitHandle, EventWaitHandle actionClickWaitHandle) { var durationTask = Task.Run(() => { WaitHandle.WaitAll(new WaitHandle[] { mouseNotOverManagedWaitHandle.WaitHandle, durationPassedWaitHandle }); }); var actionClickTask = Task.Run(actionClickWaitHandle.WaitOne); await Task.WhenAny(durationTask, actionClickTask); mouseNotOverManagedWaitHandle.WaitHandle.Set(); durationPassedWaitHandle.Set(); actionClickWaitHandle.Set(); await Task.WhenAll(durationTask, actionClickTask); }