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)으로 캐스팅하여 사용하는 것이 일반적인 패턴입니다.
또한 여러 개의 값을 전달해야 하는 경우에는 클래스나 구조체 같은 커스텀 객체 하나에 데이터를 담아 전달하거나, 람다 식과 클로저를 활용하는 방법도 고려할 수 있습니다.