TPL任務的優雅終止:利用取消令牌
在平行程式設計中,管理任務的生命週期至關重要。 雖然執行緒提供>方法,但這並不適用於使用執行緒池的任務並行庫(TPL)任務。 中斷TPL任務需要更優雅的解決方案。
建議的方法涉及Abort
>。 這些令牌為運行任務提供了信令取消請求的機制。 讓我們用一個例子來說明:
CancellationToken
此程式碼示範了A
<code class="language-csharp">class Program { static void Main() { var cts = new CancellationTokenSource(); CancellationToken ct = cts.Token; Task task = Task.Factory.StartNew(() => { while (!ct.IsCancellationRequested) { // Perform lengthy operation Thread.Sleep(100); } Console.WriteLine("Task cancelled gracefully."); }, ct); // Simulate some work before cancellation Thread.Sleep(3000); // Initiate cancellation cts.Cancel(); task.Wait(); // Wait for task completion Console.ReadLine(); } }</code>屬性允許任務檢查取消請求。 收到取消訊號後,任務會乾淨退出,避免突然終止。 此方法可確保受控且可預測的任務終止,這是對
方法的不穩定性潛力的顯著改善。 CancellationTokenSource
以上是如何有效取消TPL任務?的詳細內容。更多資訊請關注PHP中文網其他相關文章!