タスクを効果的にキャンセルします
await
WinRTタスクを扱う場合、タスクを終了するためにメソッドを使用しようとすることができます。ただし、このコードは偶発的な結果につながる可能性があります。これは、たとえキャンセルしようとしたとしても、タスクが完了し続けるためです。この制限を克服し、キャンセル時にタスクを実際に停止するために、以下の手順に従ってください:
オブジェクトを渡すことによる関数のキャンセルの関数は、メソッドに送信されます。このトークンを定期的に検証できることを確認してください。 CancelNotification
CancellationToken
操作でブロックを使用することにより、
を処理し、タスクのキャンセルの影響を減らすために適切な措置を講じることができます。<code class="language-csharp">private async Task TryTask() { CancellationTokenSource source = new CancellationTokenSource(); source.CancelAfter(TimeSpan.FromSeconds(1)); Task<int> task = Task.Run(() => slowFunc(1, 2, source.Token), source.Token); try { await task; } catch (OperationCanceledException) { // 处理取消 } } private int slowFunc(int a, int b, CancellationToken cancellationToken) { string someString = string.Empty; for (int i = 0; i < 1000000; i++) { someString += i.ToString(); cancellationToken.ThrowIfCancellationRequested(); // 定期检查取消请求 } return a + b; }</code>
以上が「待ち望まれているwinrtタスクを適切にキャンセルする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。