- スレッドの作成と開始: スレッドを作成するには、Threadクラスを使用します。以下は、スレッドを作成して開始する基本的な例です。
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("メインスレッド: " + i);
Thread.Sleep(1000);
}
}
static void DoWork()
{
// スレッドの処理
for (int i = 0; i < 5; i++)
{
Console.WriteLine("スレッド: " + i);
Thread.Sleep(1000);
}
}
}
- スレッドの同期: 複数のスレッドが同時に実行される場合、データの競合や同期の問題が発生する可能性があります。これを防ぐために、スレッドの同期を行う必要があります。以下は、Monitorクラスを使用してスレッドの同期を行う例です。
using System;
using System.Threading;
class Program
{
static int counter = 0;
static object lockObject = new object();
static void Main()
{
// スレッドを作成して開始
Thread thread1 = new Thread(IncrementCounter);
Thread thread2 = new Thread(IncrementCounter);
thread1.Start();
thread2.Start();
// メインスレッドの処理
for (int i = 0; i < 5; i++)
{
Console.WriteLine("メインスレッド: " + counter);
Thread.Sleep(1000);
}
}
static void IncrementCounter()
{
for (int i = 0; i < 5; i++)
{
lock (lockObject)
{
counter++;
}
Console.WriteLine("スレッド: " + counter);
Thread.Sleep(1000);
}
}
}
- スレッドの終了待機: スレッドの処理が完了するのを待機する必要がある場合、ThreadクラスのJoinメソッドを使用します。以下は、スレッドの終了を待機する例です。
using System;
using System.Threading;
class Program
{
static void Main()
{
// スレッドを作成して開始
Thread thread = new Thread(DoWork);
thread.Start();
// スレッドの終了を待機
thread.Join();
Console.WriteLine("スレッドが終了しました。");
}
static void DoWork()
{
// スレッドの処理
Thread.Sleep(5000);
Console.WriteLine("スレッドの処理が完了しました。");
}
}
これらのコード例を参考にして、C#でスレッドを使用する方法を学び、自分自身でさまざまなスレッドの演習を行ってみてください。