Annuler efficacement la tâche
await
Lorsque vous traitez avec la tâche WinRT, vous pouvez essayer d'utiliser la méthode pour mettre fin à la tâche. Cependant, ce code peut conduire à des résultats accidentels, car même si vous essayez d'annuler, la tâche continuera d'être terminée. Afin de surmonter cette limite et d'arrêter vraiment la tâche lors de l'annulation, veuillez suivre les étapes ci-dessous:
La fonction de l'annulation de la fonction en passant l'objet est transmise à votre méthode. Assurez-vous que ces jetons peuvent être vérifiés régulièrement. CancelNotification
CancellationToken
dans l'opération , vous pouvez gérer
et prendre des mesures appropriées pour réduire l'impact de l'annulation des tâches.<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>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!