public async Task TaskCancellationManager_CancelAllTasks_Many() { var count = 100; using (var enter = new CountdownEvent(count)) using (var exit = new CountdownEvent(count)) { var mgr = new TaskCancellationManager <int>(); var tasks = new List <Task>(count); for (var i = 0; i < count; ++i) { tasks.Add(mgr.AddAndInvokeAsync(i, async token => { var tcs = new TaskCompletionSource <bool>(); using (token.Register(() => tcs.SetResult(true))) { enter.Signal(); await tcs.Task; exit.Signal(); } })); } Assert.IsTrue(enter.WaitHandle.WaitOne()); Assert.AreEqual(count, mgr.PendingOperationCount); mgr.CancelAllTasks(); Assert.IsTrue(exit.WaitHandle.WaitOne()); await Task.WhenAll(tasks); Assert.AreEqual(0, mgr.PendingOperationCount); } }
public async Task TaskCancellationManager_CancelAllTasks() { using (var enter = new AutoResetEvent(false)) using (var exit = new AutoResetEvent(false)) { var mgr = new TaskCancellationManager <int>(); var t = mgr.AddAndInvokeAsync(42, async token => { var tcs = new TaskCompletionSource <bool>(); using (token.Register(() => tcs.SetResult(true))) { enter.Set(); await tcs.Task; exit.Set(); } }); Assert.IsTrue(enter.WaitOne()); mgr.CancelAllTasks(); Assert.IsTrue(exit.WaitOne()); await t; } }
public override void OnReactInstanceDispose() { _prefetchRequests.CancelAllTasks(); }
public override void OnReactInstanceDispose() { _tasks.CancelAllTasks(); _httpClient.Dispose(); }
public override Task OnReactInstanceDisposeAsync() { _prefetchRequests.CancelAllTasks(); return(Task.CompletedTask); }