Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Membuat Panggilan Kaedah Tidak Menyekat dalam C# Menggunakan `ThreadPool.QueueUserWorkItem` dan `Task.Run`?

Bagaimana untuk Membuat Panggilan Kaedah Tidak Menyekat dalam C# Menggunakan `ThreadPool.QueueUserWorkItem` dan `Task.Run`?

Patricia Arquette
Lepaskan: 2025-01-18 16:02:09
asal
972 orang telah melayarinya

How to Make Non-Blocking Method Calls in C# Using `ThreadPool.QueueUserWorkItem` and `Task.Run`?

Panggilan kaedah tidak menyekat dalam C#: Penggunaan ThreadPool.QueueUserWorkItem dan Task.Run

Dalam C#, kaedah boleh dilaksanakan tanpa menyekat, membenarkan utas untuk terus melaksanakan tanpa menunggu kaedah selesai.

Cara paling langsung ialah menggunakan kaedah ThreadPool.QueueUserWorkItem. Ia menerima WaitCallback perwakilan sebagai parameter, yang menentukan kaedah untuk dilaksanakan secara tak segerak.

Contoh:

<code class="language-csharp">using System.Threading;

class Foo
{
    static void Main()
    {
        // FireAway将在后台执行
        ThreadPool.QueueUserWorkItem(o => FireAway());

        Console.WriteLine("立即执行");
    }

    static void FireAway()
    {
        Thread.Sleep(5000);
        Console.WriteLine("5秒后执行");
    }
}</code>
Salin selepas log masuk

Dalam contoh ini, kaedah FireAway dimasukkan ke dalam kumpulan benang dan utas utama meneruskan pelaksanaan serta-merta selepas memulakan panggilan tak segerak.

Kaedah lain: Task.Run

Cara yang lebih moden dan ringkas untuk menjalankan tugas secara tak segerak ialah menggunakan kaedah Task.Run, yang mengembalikan objek Task yang mewakili operasi tak segerak.

Contoh:

<code class="language-csharp">using System.Threading.Tasks;

class Foo
{
    static void Main()
    {
        // FireAway将在后台执行
        Task.Run(() => FireAway());

        Console.WriteLine("立即执行");
    }

    static void FireAway()
    {
        Thread.Sleep(5000);
        Console.WriteLine("5秒后执行");
    }
}</code>
Salin selepas log masuk

ThreadPool.QueueUserWorkItem dan Task.Run kedua-duanya menyediakan cara yang cekap untuk melaksanakan kaedah tanpa sekatan dalam C#. Walau bagaimanapun, apabila menggunakan teknologi ini dalam senario yang berbeza, adalah penting untuk mempertimbangkan potensi kesan dan hadnya.

Atas ialah kandungan terperinci Bagaimana untuk Membuat Panggilan Kaedah Tidak Menyekat dalam C# Menggunakan `ThreadPool.QueueUserWorkItem` dan `Task.Run`?. 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