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
Patricia Arquetteasal
2025-01-18 16:02:09999semak imbas

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>

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>

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!

Kenyataan:
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