스레드가 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

위 코드에서 우리는thread1thread2스레드가 C#의Thread.Join()메소드를 사용하여 메인 스레드 내부에서 완료되기를 기다렸습니다.

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