Stornieren Sie die TPL -Mission elegant
In einer thread -basierten Programmierung muss die Aufgabe möglicherweise abgebrochen werden, wenn sich die Umgebung ändert oder Threads enden müssen. Bei Verwendung der ABORT -Methode zum Beenden des Threads wird System.Threading.Task -Instanz jedoch nicht automatisch gestoppt. In diesem Artikel wird erläutert, warum das Abort -Signal nicht direkt an die Aufgabe übertragen werden kann, und bietet eine alternative Lösung, um das Token abzubrechen.
Es wird nicht empfohlen, die Aufgabe mit der ABORT -Methode zu stornieren, da dies zu einem zufälligen Verhalten und potenziellen Datenschäden führen kann. Die empfohlene Methode besteht darin, die Stornierung am Token zu verwenden.
Die Implementierung der Stornierung des unten stehenden Tokens:
In diesem Beispiel:
<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>
Erstellen Sie eine Stornierung von Token (CTS) und seinem Token (CT).
Das obige ist der detaillierte Inhalt vonWie kann ich TPL-Aufgaben ordnungsgemäß abbrechen, anstatt die Abbruchmethode zu verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!