TPLタスクの優雅な終了:キャンセルトークンの活用
並列プログラミングでは、タスクのライフサイクルを管理することが重要です。 スレッドはAbort
メソッドを提供しますが、これはスレッドプールを使用するタスクパラレルライブラリ(TPL)タスクには適していません。 TPLタスクを中断するには、よりエレガントなソリューションが必要です
sが含まれます。 これらのトークンは、実行タスクを実行するためのキャンセル要求を信号するメカニズムを提供します。 例で説明しましょう:CancellationToken
<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 中国語 Web サイトの他の関連記事を参照してください。