QueueUserWorkItem
方法可以將工作項添加到線程池隊列中,并由線程池中的一個線程執(zhí)行。它接受一個 WaitCallback
委托作為參數(shù),該委托定義了要執(zhí)行的工作項的方法。
以下是使用 QueueUserWorkItem
方法的示例代碼:
using System;
using System.Threading;
public class Program
{
public static void Main()
{
// 創(chuàng)建線程池
ThreadPool.SetMinThreads(2, 2);
ThreadPool.SetMaxThreads(10, 10);
// 添加工作項到線程池隊列中
ThreadPool.QueueUserWorkItem(DoWork, "WorkItem 1");
ThreadPool.QueueUserWorkItem(DoWork, "WorkItem 2");
ThreadPool.QueueUserWorkItem(DoWork, "WorkItem 3");
// 等待工作項完成
Thread.Sleep(1000);
}
private static void DoWork(object workItem)
{
Console.WriteLine($"Executing work item: {workItem}");
// 模擬工作項的執(zhí)行
Thread.Sleep(1000);
Console.WriteLine($"Finished work item: {workItem}");
}
}
在上面的示例中,我們首先使用 SetMinThreads
和 SetMaxThreads
方法設置線程池的最小和最大線程數(shù)。然后,我們使用 QueueUserWorkItem
方法將三個工作項添加到線程池隊列中。每個工作項都由線程池中的一個線程執(zhí)行,執(zhí)行的方法是 DoWork
方法。最后,我們使用 Thread.Sleep
方法等待所有工作項完成。
當運行上面的代碼時,你將看到類似以下輸出:
Executing work item: WorkItem 1
Executing work item: WorkItem 2
Finished work item: WorkItem 1
Executing work item: WorkItem 3
Finished work item: WorkItem 2
Finished work item: WorkItem 3
注意,線程池是一個共享資源,所以當其它代碼也在使用線程池時,線程池的實際行為可能會有所不同。