等待執行緒在 C# 中完成
Muhammad Maisam Abbas
2023年1月30日
2021年4月29日
本教程將討論在 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
執行緒在主執行緒中完成。
Author: Muhammad Maisam Abbas
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