Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Menggugurkan atau Membatalkan Tugas TPL dengan betul dalam C#?

Bagaimana untuk Menggugurkan atau Membatalkan Tugas TPL dengan betul dalam C#?

Mary-Kate Olsen
Lepaskan: 2025-01-25 02:36:09
asal
108 orang telah melayarinya

How to Properly Abort or Cancel TPL Tasks in C#?

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.
  1. Dapatkan pembatalanToken dari sumber.
  2. Pembina tugas atau.
  3. Apabila tugas perlu digantung, hubungi Batal () pada CancellelationTokeSource.
  4. Contoh kod berikut menunjukkan kaedah ini:

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>
Salin selepas log masuk
dalam keadaan gelung

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan