Annuler la mission TPL élégamment
Dans une programmation basée sur le thread, si l'environnement change ou que les threads doivent se terminer à l'avance, la tâche peut devoir être annulée. Cependant, lors de l'utilisation de la méthode ABORD pour terminer le thread, l'instance System.Threading.Task ne sera pas arrêtée automatiquement. Cet article explique pourquoi le signal d'abandon ne peut pas être transmis directement à la tâche et fournit une solution alternative pour annuler le jeton.
Il n'est pas recommandé d'annuler la tâche avec la méthode d'abandon car elle peut provoquer un comportement accidentel et des dommages potentiels des données. La méthode recommandée consiste à utiliser l'annulation du jeton.
L'implémentation de l'annulation du jeton ci-dessous:
Dans cet exemple:
<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); } Console.WriteLine("任务已取消"); }, ct); // 模拟等待任务启动一小段时间 Thread.Sleep(3000); // 发送取消请求 cts.Cancel(); // 主线程阻塞,等待用户按下按键 Console.ReadKey(); } }</code>
Créez une annulation de jetons (CTS) et de son jeton (CT).
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!