public void TestCancel() { // Prepare a very slow download of the file and monitor for a cancellation exception Server.Slow = true; var download = new DownloadFile(Server.FileUri, _tempFile); bool exceptionThrown = false; var cancellationTokenSource = new CancellationTokenSource(); var downloadThread = new Thread(() => { try { download.Run(cancellationTokenSource.Token); } catch (OperationCanceledException) { exceptionThrown = true; } }); // Start and then cancel the download downloadThread.Start(); Thread.Sleep(100); cancellationTokenSource.Cancel(); downloadThread.Join(); exceptionThrown.Should().BeTrue(because: "Should throw OperationCanceledException"); }
public void TestCancel() { // Prepare a very slow download of the file and monitor for a cancellation exception Server.Slow = true; var download = new DownloadMemory(Server.FileUri); bool exceptionThrown = false; var cancellationTokenSource = new CancellationTokenSource(); var downloadThread = new Thread(() => { try { download.Run(cancellationTokenSource.Token); } catch (OperationCanceledException) { exceptionThrown = true; } }); // Start and then cancel the download downloadThread.Start(); Thread.Sleep(100); cancellationTokenSource.Cancel(); downloadThread.Join(); exceptionThrown.Should().BeTrue(because: "Should throw OperationCanceledException"); }
/// <summary> /// Hides the window and then starts canceling the current process asynchronously. /// </summary> private void Cancel() { Hide(); _cancellationTokenSource.Cancel(); // Unblock any waiting thread _customizeSelectionsWaitHandle?.Set(); }