본문 바로가기
C#

C# thread에 파라미터 전달하기

by violetoz 2013. 4. 24.

일반적으로 Thread호출은
 

Thread th = new Thread(new ThreadStart(test));

th.Start(); 
public void test()

{

  ....//수행할 내용

}

이런식으로 하게 되는데요. 파라미터가 있는경우는

 Thread th = new Thread(new ParameterizedThreadStart(test));

th.Start("Hello World");

 

public void test(string s)

{

...//수행할 Thread내용 (s="Hello World")


 

ParameterizedThreadStart를 통해서 수행할 Method를 호출해주고 Start시에 파라미터를 전달해줍니다.
 

Multiple Parameter 및 배열은 이런식으로 가능합니다.

 

 Thread th = new Thread(new ParameterizedThreadStart(test));

th.Start(new string[]{"Hello World","Hello You"},new int[]{1,2,3,4},"test");

 

public void test(string[] sArr, int[] iArr, string s)

{

...//수행할 Thread내용 

}

이런식으로 한꺼번에 넘기는것도 되겠죠?

string p1 = "string param."; 
long p2 = 1234567; 
int p3 = 1234; 
object args = new object[3] { p1, p2, p3 }; 
Thread b1 = new Thread(new ParameterizedThreadStart(test)); 
b1.Start(args); 
... 
private void test(object args) 

   Array argArray = new object[3]; 
   argArray = (Array)args; 
   string p1 = (string)argArray.GetValue(0); 
   long p2 = (long)argArray.GetValue(1); 
   int p3 = (int)argArray.GetValue(2); 
   ...//수행할 Thread내용 
}


     

람다표현 이런식으로도 가능합니다.
 

Thread th = new Thread(unused => test(new string[]{"Hello World","Hello You"},new int[]{1,2,3,4},"test"));

th.Start();

 

public void test(string[] sArr, int[] iArr, string s)

{

     ...//수행할 Thread내용 

}


 출처 : http://blog.naver.com/PostView.nhn?blogId=goldrushing&logNo=130147613109

'C#' 카테고리의 다른 글

C# WindowForm Process종료  (0) 2013.04.30
C# 문자열 조작  (0) 2013.04.26
C#으로 이미지파일을 DB에 넣는방법  (0) 2013.04.24
다중 쓰레드  (0) 2013.04.24
C# ThreadPool Usage  (0) 2013.04.24