public async Task CancelTaskTest() { int started = 0; int finished = 0; using (var task = new SharedTask(RunAsync)) using (var cancellationTokenSource = new CancellationTokenSource(SmallDelay)) { var task1 = task.GetOrCreateAsync(cancellationTokenSource.Token); var task2 = task.GetOrCreateAsync(); await Task.WhenAll(task1, task2); Assert.That(started, Is.EqualTo(1)); Assert.That(finished, Is.EqualTo(1)); } async Task RunAsync(CancellationToken cancellationToken) { started++; await Task.Delay(Delay, cancellationToken); finished++; } }
public async Task SingleTaskTest() { int started = 0; int finished = 0; using (var task = new SharedTask(RunAsync)) { var task1 = task.GetOrCreateAsync(); var task2 = task.GetOrCreateAsync(); await Task.WhenAll(task1, task2); Assert.That(started, Is.EqualTo(1)); Assert.That(finished, Is.EqualTo(1)); } async Task RunAsync() { started++; await Task.Delay(Delay); finished++; } }
public async Task SingleTaskTest() { var task1 = _task.GetOrCreateAsync(); var task2 = _task.GetOrCreateAsync(); await Task.WhenAll(task1, task2); Assert.That(_started, Is.EqualTo(1)); Assert.That(_finished, Is.EqualTo(1)); Assert.That(task1.Result, Is.EqualTo(ExpectedResult)); Assert.That(task2.Result, Is.EqualTo(ExpectedResult)); await Task.Delay(1); Assert.That(_task.IsRunning(), Is.False); }