Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save renestein/69a155f9c6b865d2beb5 to your computer and use it in GitHub Desktop.
Save renestein/69a155f9c6b865d2beb5 to your computer and use it in GitHub Desktop.
[TestMethod]
public virtual async Task Dispose_When_Tasks_Are_Queued_Then_All_Tasks_Are_Executed()
{
const int NUMBER_OF_TASKS = 1000;
const int DELAY_TASK_CAN_CONTINUE_SIGNAL_S = 1;
int numberOfTasksExecuted = 0;
var waitForSignalCts = new CancellationTokenSource();
var tasks = Enumerable.Range(0, NUMBER_OF_TASKS)
.Select(taskIndex => TestTaskFactory.StartNew(() =>
{
waitForSignalCts.Token.WaitHandle.WaitOne();
return Interlocked.Increment(ref numberOfTasksExecuted);
})).ToArray();
waitForSignalCts.CancelAfter(TimeSpan.FromSeconds(DELAY_TASK_CAN_CONTINUE_SIGNAL_S));
Scheduler.Dispose();
await Task.WhenAll(tasks);
Assert.AreEqual(NUMBER_OF_TASKS, numberOfTasksExecuted);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment