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();
 }
示例#4
0
 public override void OnReactInstanceDispose()
 {
     _tasks.CancelAllTasks();
     _httpClient.Dispose();
 }
示例#5
0
 public override Task OnReactInstanceDisposeAsync()
 {
     _prefetchRequests.CancelAllTasks();
     return(Task.CompletedTask);
 }