안녕하세요, MoonLight입니다.
오늘은 C#에서 Thread 함수를 만들어서 사용할 때, Parameter를 넘기는 방법에 대해서 알아보도록 하겠습니다.
언뜻 떠오르는 방법은 Class 변수를 전역 변수처럼 사용해서 사용하는 방법이 있을 수 있겠습니다.
하지만, 뭔가 세련되지 못한 듯한 느낌이 오죠?
제가 오늘 소개해 드릴 방법은 ParameterizedThreadStart Class를 사용하는 방법입니다.
ParameterizedThreadStart Class 사용법을 예제 Code로 한 번 알아보도록 하겠습니다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
int Param = 7;
Thread TestThread = new Thread(new ParameterizedThreadStart(StartTest));
TestThread.Start(Param);
TestThread.Join();
Console.WriteLine("Completed");
}
private static void StartTest(object Parameter)
{
int LastNum = (int)Parameter;
for(int i=0; i<LastNum; i++)
{
Console.WriteLine(i.ToString());
}
}
}
}
위의 예제는 'Param'이라는 int 변수값을 받아서 Thread Function에서 0부터 Param까지 출력하는 예제입니다.
'Param'이라는 int 변수를 Thread 함수 Call할 때 같이 넘겨주고 싶습니다.
먼저 아래와 같이 내가 사용할 Thread Function이 Parameter를 넘겨줄 것이라는 것을 ParameterizedThreadStart을 이용해서 미리 알려줍니다.
Thread TestThread = new Thread(new ParameterizedThreadStart(StartTest));
그리고, Thread.Start()를 Call할 때 원하는 Parameter를 넘겨주면 됩니다.
TestThread.Start(Param);
그리고, 실제 Thread Function에서 Parameter를 받을 때는 아래와 같이 object로 넘어오는데,
처음 선언한 변수 Type으로 Casting해서 사용하면 됩니다.
private static void StartTest(object Parameter)
{
int LastNum = (int)Parameter;
for(int i=0; i<LastNum; i++)
{
Console.WriteLine(i.ToString());
}
}
이 예제에서는 int 변수를 사용했기 때문에 사용할 때는 (int)로 Casting해서 사용했습니다.
오늘은 Thread Function에 Parameter를 넘기는 방법에 대해서 알아보았는데요,
간단한데, 모르면 답답하죠.
도움이 되셨으면 좋겠구요, 다음에 또 만나요~!
'Development Tip' 카테고리의 다른 글
C# - Font Load하여 사용하기 (0) | 2024.03.29 |
---|---|
C# - System.InvalidOperationException 크로스 스레드 작업이 잘못되었습니다 (0) | 2024.03.27 |
C# - "System.InvalidOperationException: 컬렉션이 수정되었습니다" 오류 (0) | 2024.02.24 |
C# listbox를 자동 스크롤되도록 만들기 (0) | 2024.02.15 |
C# UI 작업하면서 Delay 주기 (0) | 2024.02.14 |