C#におけるマルチスレッディング手法
C# においてマルチスレッドを使用するには複数の方法があります:
- スレッドクラスを用いる:指定されたメソッドを実行する新しいスレッドを作成することができる。スレッドクラスを使用してスレッドを開始、停止し、またスレッドの状態を確認することができる。以下にスレッドクラスを使用する例を示す。
using System;
using System.Threading;
class Program
{
static void Main()
{
Thread thread = new Thread(DoWork);
thread.Start();
// 继续执行主线程的其他操作
for (int i = 0; i < 5; i++)
{
Console.WriteLine("Main thread: " + i);
Thread.Sleep(1000);
}
}
static void DoWork()
{
for (int i = 0; i < 5; i++)
{
Console.WriteLine("Worker thread: " + i);
Thread.Sleep(1000);
}
}
}
- スレッドプールクラスを活用する: スレッドプールとは、複数のワーカー スレッドを含むスレッドのコレクションで、短期間のタスクを実行するために再利用されます。 ThreadPool.QueueUserWorkItem メソッドを使用して、スレッドプールに作業項目を追加できます。 スレッドプールクラスを使用する例を以下に示します。
using System;
using System.Threading;
class Program
{
static void Main()
{
ThreadPool.QueueUserWorkItem(DoWork);
// 继续执行主线程的其他操作
for (int i = 0; i < 5; i++)
{
Console.WriteLine("Main thread: " + i);
Thread.Sleep(1000);
}
}
static void DoWork(object state)
{
for (int i = 0; i < 5; i++)
{
Console.WriteLine("Worker thread: " + i);
Thread.Sleep(1000);
}
}
}
- 非同期処理のためのTaskクラス:Taskクラスとは、.NET Framework 4以降で導入された、非同期操作を表す型です。Task.Runメソッドを使用することで新しいタスクを作成し、Task.Waitメソッドでタスクの完了を待機することができます。以下にTaskクラスを使用した例を示します。
using System;
using System.Threading.Tasks;
class Program
{
static void Main()
{
Task task = Task.Run(DoWork);
task.Wait();
// 继续执行主线程的其他操作
for (int i = 0; i < 5; i++)
{
Console.WriteLine("Main thread: " + i);
Task.Delay(1000).Wait();
}
}
static void DoWork()
{
for (int i = 0; i < 5; i++)
{
Console.WriteLine("Worker thread: " + i);
Task.Delay(1000).Wait();
}
}
}
C# によるマルチスレッド処理は、これらをはじめとする各種手法があります。自分のニーズに合った処理方法を選択してください。