线程池ThreadPool中的QueueUserWorkItem方法用于将要执行的工作项目添加到线程池的工作队列中,并由线程池中的线程来执行。
使用QueueUserWorkItem方法的一般步骤如下:
下面是一个示例代码:
using System;
using System.Threading;
public class Program
{
public static void Main()
{
// 创建一个委托,用于执行具体的工作
WaitCallback workItem = new WaitCallback(DoWork);
// 将工作项目添加到线程池的工作队列中
ThreadPool.QueueUserWorkItem(workItem, "Hello, ThreadPool!");
Console.WriteLine("Main thread is doing some other work...");
// 等待一段时间,以便观察到工作项目的执行结果
Thread.Sleep(2000);
}
private static void DoWork(object state)
{
// 执行具体的工作
string message = (string)state;
Console.WriteLine("DoWork method is processing: " + message);
}
}
在上面的示例中,我们创建了一个委托WaitCallback
,并将其作为参数传递给ThreadPool.QueueUserWorkItem
方法。然后,在DoWork
方法中,我们执行了具体的工作。
当运行这个示例时,你将看到主线程先打印出"Main thread is doing some other work…"这句话,然后才会打印出"DoWork method is processing: Hello, ThreadPool!"这句话。这是因为工作项目是由线程池中的线程来执行的,而不是由主线程来执行的。