【C#】複数のスレッドが実行されている短いサンプル
サンプルコード
以下は、複数のスレッドが並行して実行されている様子を示す短いサンプルコードです。この例では、Task.Run
メソッドを使用して異なるスレッド上で非同期タスクを実行します。
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
Console.WriteLine("メインスレッド: 開始");
// Task.Runを使用して非同期タスクを別スレッドで実行
Task task1 = Task.Run(async () =>
{
await DoAsyncWork("タスク1");
});
Task task2 = Task.Run(async () =>
{
await DoAsyncWork("タスク2");
});
// 両タスクの完了を待機
await Task.WhenAll(task1, task2);
Console.WriteLine("メインスレッド: 終了");
}
static async Task DoAsyncWork(string taskName)
{
Console.WriteLine($"{taskName} - 開始");
// 何か非同期の処理をシミュレートします
await Task.Delay(2000); // 2秒待機
Console.WriteLine($"{taskName} - 完了");
}
}
実行結果
このコードでは、Task.Run
メソッドを使用して異なるスレッド上で非同期タスクを実行しています。各タスクは DoAsyncWork
メソッドを呼び出し、2秒待機してから完了メッセージを表示します。Task.WhenAll
メソッドを使用して、両方のタスクが完了するのを待機します。
実行すると、以下のような出力が得られるでしょう(順序は実行時によって異なるかもしれません):
メインスレッド: 開始
タスク1 – 開始
タスク2 – 開始
タスク1 – 完了
タスク2 – 完了
メインスレッド: 終了
おまけ
サンプルコードをトップレベルステートメントで記述すると
using System;
using System.Threading.Tasks;
Console.WriteLine("メインスレッド: 開始");
// Task.Runを使用して非同期タスクを別スレッドで実行
Task task1 = Task.Run(async () =>
{
await DoAsyncWork("タスク1");
});
Task task2 = Task.Run(async () =>
{
await DoAsyncWork("タスク2");
});
// 両タスクの完了を待機
await Task.WhenAll(task1, task2);
Console.WriteLine("メインスレッド: 終了");
async Task DoAsyncWork(string taskName)
{
Console.WriteLine($"{taskName} - 開始");
// 何か非同期の処理をシミュレートします
await Task.Delay(2000); // 2秒待機
Console.WriteLine($"{taskName} - 完了");
}
ディスカッション
コメント一覧
まだ、コメントがありません