Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#에서 스레드에 매개변수 전달하기 – 완벽 가이드

C#에서 스레드(Thread)를 사용하려면 먼저 코드 상단에 다음 네임스페이스를 추가해야 합니다.

using System.Threading;

그다음, C#에서 새로운 스레드를 생성합니다.

Thread thread = new Thread(threadDemo);

위 코드에서 threadDemo는 스레드가 실행할 대상 함수입니다.

이제 Start() 메서드를 호출하면서 매개변수를 함께 전달할 수 있습니다.

thread.Start(str);

여기서 전달되는 매개변수는 다음과 같이 선언된 문자열입니다.

String str = "Hello World!";

예제

C#에서 스레드에 매개변수를 전달하는 과정을 전체 코드로 확인해 보겠습니다.

using System;
using System.Threading;
namespace Sample {
   class Demo {
      static void Main(string[] args) {
         String str = "Hello World!";
         // 새 스레드 생성
         Thread thread = new Thread(threadDemo);
         // 매개변수 전달
         thread.Start(str);
      }
      static void threadDemo(object str) {
         Console.WriteLine("Value passed to the thread: "+str);
      }
   }
}

출력 결과

Value passed to the thread: Hello World!

핵심 포인트 정리

thread.Start(object) 형태로 값을 전달하면 내부적으로 ParameterizedThreadStart 델리게이트가 사용됩니다. 이때 주의할 점은 스레드 함수의 매개변수 타입이 반드시 object여야 한다는 것입니다. 따라서 함수 내부에서 실제 타입(예: string, int)으로 캐스팅하여 사용하는 것이 일반적인 패턴입니다.

또한 여러 개의 값을 전달해야 하는 경우에는 클래스나 구조체 같은 커스텀 객체 하나에 데이터를 담아 전달하거나, 람다 식과 클로저를 활용하는 방법도 고려할 수 있습니다.