Example #1
0
 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));
 }
Example #2
0
 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);
        }