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