cari/batalkan tugas tpl
Dalam pengaturcaraan berbilang, apabila menggunakan kaedah .abort () untuk menamatkan benang, tugas -tugas yang dibuat dalam benang ini boleh terus berjalan, mengakibatkan tingkah laku yang tidak dijangka. Artikel ini menggariskan kaedah yang betul untuk menggantung atau membatalkan tugas TPL (Task Parallel Library).
misi TPL dilakukan pada benang latar belakang dari kolam thread, dan mereka tidak boleh dihentikan secara langsung. Kaedah yang disyorkan adalah menggunakan tanda pembatalan.
Label Pembatalan menyediakan cara untuk mengeluarkan isyarat pelaksanaan berhenti kepada tugas. Untuk ini:
Buat CancellationTokenSource.
Contoh Revned ini menggunakan
<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>
untuk kebolehbacaan dan kejelasan yang lebih baik, secara langsung memeriksa permintaan pembatalan dengan gelung. . 3
Atas ialah kandungan terperinci Bagaimana untuk Menggugurkan atau Membatalkan Tugas TPL dengan betul dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!