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!