Découvrir / annuler la tâche TPL
Dans la programmation multi-thread, lors de l'utilisation de la méthode .Abort () pour terminer les threads, les tâches créées dans ce fil peuvent continuer à s'exécuter, entraînant des comportements inattendus. Cet article décrit la méthode correcte de suspension ou d'annulation de la tâche TPL (Task Parallel Library).
La mission TPL est effectuée sur les threads d'arrière-plan de la piscine de fil, et ils ne peuvent pas être arrêtés directement. La méthode recommandée consiste à utiliser la marque d'annulation.
L'étiquette d'annulation fournit un moyen d'émettre un signal d'exécution d'arrêt à la tâche. Pour ceci:
Créez une annulation de TokenSource.
Cet exemple révocal utilise
<code class="language-csharp">class Program { static void Main() { var cts = new CancellationTokenSource(); CancellationToken ct = cts.Token; Task.Factory.StartNew(() => { while (!ct.IsCancellationRequested) { // 执行一些繁重的工作 Thread.Sleep(100); // 检查取消请求 if (ct.IsCancellationRequested) { Console.WriteLine("任务已取消"); break; } } }, ct); // 模拟等待任务完成 3 秒 Thread.Sleep(3000); // 无法再等待 => 取消此任务 cts.Cancel(); Console.ReadLine(); } }</code>
pour une meilleure lisibilité et une meilleure clarté, vérifiant directement la demande d'annulation avec la boucle. .
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!