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); } }
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); }