中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

線程池ThreadPool中QueueUserWorkItem怎么使用

小億
221
2023-11-15 13:15:17
欄目: 編程語言

QueueUserWorkItem 方法可以將工作項添加到線程池隊列中,并由線程池中的一個線程執行。它接受一個 WaitCallback 委托作為參數,該委托定義了要執行的工作項的方法。

以下是使用 QueueUserWorkItem 方法的示例代碼:

using System;
using System.Threading;

public class Program
{
    public static void Main()
    {
        // 創建線程池
        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}");

        // 模擬工作項的執行
        Thread.Sleep(1000);

        Console.WriteLine($"Finished work item: {workItem}");
    }
}

在上面的示例中,我們首先使用 SetMinThreadsSetMaxThreads 方法設置線程池的最小和最大線程數。然后,我們使用 QueueUserWorkItem 方法將三個工作項添加到線程池隊列中。每個工作項都由線程池中的一個線程執行,執行的方法是 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

注意,線程池是一個共享資源,所以當其它代碼也在使用線程池時,線程池的實際行為可能會有所不同。

0
青州市| 扎鲁特旗| 洪洞县| 黔江区| 吉木乃县| 宝鸡市| 上思县| 锦州市| 高雄市| 舞钢市| 黔东| 宣汉县| 武川县| 来凤县| 高台县| 青阳县| 龙里县| 环江| 鄂尔多斯市| 蒲城县| 石林| 西乌| 丹凤县| 棋牌| 武山县| 孟津县| 无棣县| 旌德县| 积石山| 水富县| 新丰县| 泗洪县| 湟源县| 泗水县| 广德县| 嘉黎县| 景德镇市| 葫芦岛市| 陆良县| 靖江市| 郴州市|