Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Membuat Panggilan Kaedah Tidak Menyekat dalam C# Sederhana?

Bagaimanakah Saya Boleh Membuat Panggilan Kaedah Tidak Menyekat dalam C# Sederhana?

DDD
Lepaskan: 2025-01-18 15:46:08
asal
668 orang telah melayarinya

How Can I Make Non-Blocking Method Calls in C# Simply?

Memudahkan Panggilan Kaedah Tidak Menyekat dalam C#

C# menawarkan beberapa cara untuk mencipta kaedah tidak menyekat—kaedah yang dilaksanakan secara tak segerak tanpa menghentikan utas utama. Walaupun atribut [OperationContract(IsOneWay = true)] WCF menyediakan fungsi ini, ia boleh menjadi berlebihan untuk senario yang lebih mudah.

Pendekatan yang paling mudah digunakan ThreadPool.QueueUserWorkItem. Kaedah ini menambahkan tugasan pada kumpulan benang dengan cekap, membolehkan pelaksanaan tak segerak.

Berikut ialah contoh ilustrasi:

<code class="language-csharp">class Foo
{
    static void Main()
    {
        ThreadPool.QueueUserWorkItem(_ => FireAway()); //Asynchronous execution
        Console.WriteLine("Immediate execution");
    }

    static void FireAway()
    {
        System.Threading.Thread.Sleep(5000);
        Console.WriteLine("Execution after 5 seconds");
    }
}</code>
Salin selepas log masuk

Sebagai alternatif, versi C# 5.0 dan lebih baru menyediakan Task.Run, menawarkan cara yang lebih moden dan ringkas untuk mencapai pelaksanaan tak segerak pada utas kumpulan benang:

<code class="language-csharp">Task.Run(() => FireAway());</code>
Salin selepas log masuk

Kedua-dua ThreadPool.QueueUserWorkItem dan Task.Run menghalang utas utama daripada menyekat semasa pelaksanaan kaedah tak segerak.

Walau bagaimanapun, adalah penting untuk mempertimbangkan sama ada penyempurnaan kaedah itu penting sebelum kaedah Main ditamatkan. Dalam persekitaran seperti ASP.NET, mekanisme tambahan mungkin diperlukan untuk menghalang penamatan pramatang operasi tak segerak.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membuat Panggilan Kaedah Tidak Menyekat dalam C# Sederhana?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan