等待執行緒在 C# 中完成

Muhammad Maisam Abbas 2024年2月16日
  1. 用 C# 中的 Task.WaitAll() 方法等待執行緒完成
  2. 用 C# 中的 Thread.Join() 方法等待執行緒完成
等待執行緒在 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() 方法在主執行緒中完成 thread1thread2 任務。

用 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() 方法等待 thread1thread2 執行緒在主執行緒中完成。

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

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

相關文章 - Csharp Thread