等待執行緒在 C# 中完成

Muhammad Maisam Abbas 2023年1月30日 2021年4月29日
  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