public void TaskCancellationManager_CancelledAfterCompleted() { var mgr = new TaskCancellationManager<int>(); mgr.Add(42, _ => Task.CompletedTask); mgr.Cancel(42); // Not throwing implies success }
public void TaskCancellationManager_CancelInvalidId() { var mgr = new TaskCancellationManager <int>(); mgr.Cancel(42); // Not throwing implies success }
public async Task TaskCancellationManager_CancelledAfterCompleted() { var mgr = new TaskCancellationManager <int>(); await mgr.Add(42, _ => Task.CompletedTask); mgr.Cancel(42); // Not throwing implies success }
public void TaskCancellationManager_CancelledAfterCompleted() { var mgr = new TaskCancellationManager <int>(); mgr.Add(42, _ => Task.FromResult(true)); mgr.Cancel(42); // Not throwing implies success }
public async Task TryCancelExportAsync() { try { _cancellationManager.Cancel(); await _cancellationManager.WaitForAllToCancelAsync(); } catch (Exception ex) { Logger.LogErrorEverywhere("Ошибка отмены экспорта", ex); } }
public async Task TaskCancellationManager_CancelledAfterCompleted() { var mgr = new TaskCancellationManager <int>(); var task = new Task(() => { }); task.Start(); await mgr.AddAndInvokeAsync(42, _ => task); mgr.Cancel(42); // Not throwing implies success }
public void TaskCancellationManager_CancelTask() { var enter = new AutoResetEvent(false); var exit = new AutoResetEvent(false); var mgr = new TaskCancellationManager<int>(); mgr.Add(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.Cancel(42); Assert.IsTrue(exit.WaitOne()); }
/// <summary> /// Initiates the network fetch and informs the producer when a /// response is received via the provided callback. /// </summary> /// <param name="fetchState"> /// The fetch-specific state. /// </param> /// <param name="callback"> /// The callback used to inform the network fetch producer. /// </param> public override void Fetch( FetchState fetchState, INetworkFetcherCallback callback) { _tasks.Add(fetchState.Id, token => FetchASync(fetchState, callback, token)); fetchState.Context.AddCallbacks( new BaseProducerContextCallbacks( () => { bool isCanceled = _tasks.Cancel(fetchState.Id); if (isCanceled) { callback.OnCancellation(); } }, () => { }, () => { }, () => { })); }
public async Task TaskCancellationManager_CancelTask() { var enter = new AutoResetEvent(false); var exit = new AutoResetEvent(false); var mgr = new TaskCancellationManager <int>(); var t = mgr.Add(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.Cancel(42); Assert.IsTrue(exit.WaitOne()); await t; }
public void abortRequest(int requestId) { _prefetchRequests.Cancel(requestId); }
public void stopDownload(int jobId) { _tasks.Cancel(jobId); }