예제 #1
0
 public MockWorkOut DoMockWorkBlocking(MockWorkIn work, CancellationToken token)
 {
     taskBlocker1.SetResult(null);
     try
     {
         taskBlocker3.Task.Wait();
         try
         {
             Task.Delay(workDurationMs, token).Wait();
         }
         catch (AggregateException eag)
         {
             doneWork.Enqueue(new Tuple <bool, MockWorkIn, MockWorkOut>(true, work, null));
             throw eag.InnerException;
         }
         catch (Exception)
         {
             doneWork.Enqueue(new Tuple <bool, MockWorkIn, MockWorkOut>(true, work, null));
             throw;
         }
         var done = new MockWorkOut(work);
         doneWork.Enqueue(new Tuple <bool, MockWorkIn, MockWorkOut>(false, work, done));
         return(done);
     }
     finally
     {
         taskBlocker2.SetResult(null);
     }
 }
예제 #2
0
            public MockWorkOut DoMockWork_Simple(MockWorkIn work, CancellationToken token)
            {
                try
                {
                    Task.Delay(workDurationMs, token).Wait();
                    token.ThrowIfCancellationRequested();
                }
                catch
                {
                    doneWork.Enqueue(new Tuple <bool, MockWorkIn, MockWorkOut>(true, work, null));
                    throw;
                }
                var done = new MockWorkOut(work);

                doneWork.Enqueue(new Tuple <bool, MockWorkIn, MockWorkOut>(false, work, done));
                return(done);
            }