在C#中,QueueUserWorkItem是一個用于將方法添加到線程池隊列中的方法。它的用法是將一個委托(即方法)添加到線程池隊列中,以便在線程池中的一個可用線程上執行該方法。
使用QueueUserWorkItem方法的一般語法如下:
ThreadPool.QueueUserWorkItem(new WaitCallback(MethodName), state);
其中,MethodName是要在線程池中執行的方法的名稱,state是可選的對象參數,可以在方法中使用。
以下是一個示例,演示如何使用QueueUserWorkItem方法:
using System;
using System.Threading;
public class Program
{
public static void Main()
{
// 添加方法到線程池隊列
ThreadPool.QueueUserWorkItem(new WaitCallback(DoWork), "Hello");
Console.WriteLine("Main thread is doing some work...");
Thread.Sleep(2000);
Console.WriteLine("Main thread is done.");
}
private static void DoWork(object state)
{
// 在線程池中執行的方法
string message = (string)state;
Console.WriteLine("Worker thread received message: " + message);
Thread.Sleep(3000);
Console.WriteLine("Worker thread is done.");
}
}
在上面的示例中,我們使用QueueUserWorkItem方法將DoWork方法添加到線程池隊列中。在DoWork方法中,我們打印接收到的消息,然后模擬一些工作,最后打印完成消息。在Main方法中,我們首先添加了DoWork方法到線程池隊列,然后主線程繼續執行其他工作。當主線程完成后,它會等待線程池中的線程執行完畢。
注意:在實際應用中,我們通常使用更高級的異步編程模型,如Task和async/await來處理并發操作。但是,QueueUserWorkItem仍然是一個基本的方法,可以用于簡單的并發任務。