C# でスレッドが終了するのを待つ
このチュートリアルでは、C# でスレッドの完了を待機する方法について説明します。
C# の Task.WaitAll()
メソッドでスレッドが終了するのを待つ
C# の Task.WaitAll()
メソッドは、Task
クラスのすべてのオブジェクトの完了を待機するために使用されます。Task
クラスは、C# の非同期タスクを表します。Task
クラスでスレッドを開始し、C# の Task.WaitAll()
メソッドでスレッドが終了するのを待つことができます。
using System;
using System.Threading.Tasks;
namespace wait_for_thread {
class Program {
static void fun1() {
for (int i = 0; i < 2; i++) {
Console.WriteLine("Thread 1");
}
}
static void fun2() {
for (int i = 0; i < 2; i++) {
Console.WriteLine("Thread 2");
}
}
static void Main(string[] args) {
Task thread1 = Task.Factory.StartNew(() => fun1());
Task thread2 = Task.Factory.StartNew(() => fun2());
Task.WaitAll(thread1, thread2);
Console.WriteLine("The End");
}
}
}
出力:
Thread 1
Thread 1
Thread 2
Thread 2
The End
上記のコードでは、C# の Task.WaitAll()
メソッドを使用して、メインスレッド内の thread1
タスクと thread2
タスクが完了するのを待ちました。
C# の Thread.Join()
メソッドでスレッドが終了するのを待つ
上記のセクションでは、C# の Task.WaitAll()
メソッドを使用してスレッドを待機する方法について説明しました。C# の Thread.Join()
メソッドでも同じ目標を達成できます。Thread.Join()
メソッドは、現在のスレッドが実行を完了するまで、呼び出し元のスレッドの実行を停止します。次のコード例は、C# の Thread.Join()
メソッドを使用して、スレッドが実行を完了するのを待つ方法を示しています。
using System;
using System.Threading.Tasks;
namespace wait_for_thread {
class Program {
static void fun1() {
for (int i = 0; i < 2; i++) {
Console.WriteLine("Thread 1");
}
}
static void fun2() {
for (int i = 0; i < 2; i++) {
Console.WriteLine("Thread 2");
}
}
static void Main(string[] args) {
Thread thread1 = new Thread(new ThreadStart(fun1));
Thread thread2 = new Thread(new ThreadStart(fun2));
thread1.Start();
thread1.Join();
thread2.Start();
thread2.Join();
Console.WriteLine("The End");
}
}
}
出力:
Thread 1
Thread 1
Thread 2
Thread 2
The End
上記のコードでは、C# の Thread.Join()
メソッドを使用して、thread1
スレッドと thread2
スレッドがメインスレッド内で終了するのを待ちました。
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn