c#
でタスクのキャンセルを効果的に処理しますCancellationToken.CancelNotification
を活用します 最も効果的なアプローチは、TAPと
を一貫して使用することです。
CancellationToken
CancellationToken
定期的なキャンセルチェック:CancellationToken
これらのメソッドでは、cancellationToken.ThrowIfCancellationRequested()
タップを使用した修正コードの例
説明:
<code class="language-csharp">private async Task TryTask() { using (var source = new CancellationTokenSource()) { source.CancelAfter(TimeSpan.FromSeconds(1)); try { Task<int> task = Task.Run(() => slowFunc(1, 2, source.Token), source.Token); int result = await task; // Await will re-throw any exceptions. Console.WriteLine($"Task completed successfully: {result}"); } catch (OperationCanceledException) { Console.WriteLine("Task cancelled successfully."); } } } private int slowFunc(int a, int b, CancellationToken cancellationToken) { for (int i = 0; i < 1000000; i++) { cancellationToken.ThrowIfCancellationRequested(); // Check for cancellation // ... your long-running operation ... } return a + b; }</code>
ステートメント:例外が発生した場合でも、
が適切に廃棄されることを保証します。using
は、でスローされたCancellationTokenSource
を処理し、きれいなキャンセル処理を提供します。
try-catch
呼び出しは戦略的にループ内に配置され、頻繁にキャンセルチェックを可能にします。 これにより、キャンセルが要求された後の不必要な作業が防止されます
OperationCanceledException
この改訂されたアプローチは、キャンセルが要求されたときにタスクが迅速に停止することを保証し、リソースの漏れを防ぎ、全体的なアプリケーションの応答性を改善します。以上がC# でキャンセル時にタスクを適切に停止するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。