C# ThreadPool.QueueUserWorkItem の使い方と注意点

ThreadPool.QueueUserWorkItemメソッドを使用すると、作業アイテムをスレッドプールキューに追加して、スレッドプール内の利用可能なスレッドで実行できます。以下はThreadPool.QueueUserWorkItemを使用した基本的な例です:

using System;
using System.Threading;

class Program
{
    static void Main()
    {
        for (int i = 0; i < 10; i++)
        {
            ThreadPool.QueueUserWorkItem(DoWork, i);
        }

        Console.WriteLine("All work items queued.");
        Console.ReadLine();
    }

    static void DoWork(object state)
    {
        int workItemNum = (int)state;
        Console.WriteLine("Work item {0} starting.", workItemNum);
        Thread.Sleep(1000); // 模拟工作
        Console.WriteLine("Work item {0} completed.", workItemNum);
    }
}

上記の例では、私たちはThreadPool.QueueUserWorkItemメソッドを使用して、スレッドプールキューに10個のワークアイテムを追加しました。各ワークアイテムは、作業の番号を表す整数であり、作業を表しています。 DoWorkメソッドでは、長時間実行される作業をシミュレートし、完了後に作業が完了したメッセージを印刷しています。

ThreadPool.QueueUserWorkItemメソッドは、作業項目をスレッドプールに追加し、スレッドプールは自動的に利用可能なスレッドを割り当てて実行します。作業項目が完了すると、スレッドはスレッドプールに戻り再利用されます。

bannerAds