protected async Task RunTest_CanSetCancelledManually_MultiThread <TResult> (Func <AsyncProcessingRequest <TResult> > rqFn, bool syncOnCheckpoints, int nThreads) { Barrier syncCheckpoint = new Barrier(nThreads); List <Task> allThreads = new List <Task>(); AsyncProcessingRequest <TResult> rq = rqFn .Invoke(); for (int i = 0; i < nThreads; i++) { allThreads.Add(Task.Run(() => { if (syncOnCheckpoints) { syncCheckpoint.SignalAndWait(); } rq.SetCancelled(); })); } await Task.WhenAll(allThreads); Assert.AreEqual(TaskStatus.Canceled, rq.Task.Status); }
protected void RunTest_CanSetCancelledManually_SingleThread <TResult> (Func <AsyncProcessingRequest <TResult> > rqFn) { AsyncProcessingRequest <TResult> rq = rqFn .Invoke(); rq.SetCancelled(); Assert.AreEqual(TaskStatus.Canceled, rq.Task.Status); }