- 쓰레드에서 간단하게 Invoke 하기 -
Thread를 사용하다 보면 하위 Thread에서 메인 Thread의 변수에 접근하기 위해 Invoke Method를 쓸 때가 종종 있다.
하지만 Invoke Method를 쓸 때 delegate와 그 delegate와 연결시킬 method가 필요한데, 이를 Event를 사용하면 소스코드가 한결 간단해진다.
그 예는 아래와 같다.
원본소스
private void StartThread()
{
Thread thread = new Thread(new ThreadStart(SleepThread));
thread.Start();
}
private void SleepThread()
{
System.Threading.Thread.Sleep(800);
this.Invoke(new SleppThreadDelegate(InvokeMethod));
}
public delegate void SleppThreadDelegate();
private void InvokeMethod()
{
this.timer.Start();
}
이 소스를 아래와 같이 변경가능
private void StartThread()
{
Thread thread = new Thread(new ThreadStart(SleepThread));
thread.Start();
}
private void SleepThread()
{
System.Threading.Thread.Sleep(800);
this.Invoke(new EventHandler(delegate(object o, EventArgs a)
{
this.timer.Start();
}));
}
http://blog.opennetcf.com/ctacke/2008/12/03/ControlInvokeWithoutExplicitDelegates.aspx
- 다중 매개변수를 갖는 쓰레드 돌리기 -
// function that running in a thread
void DoSomething(string param1, string param2, string param3)
{
}
// The parameters.
string param1 = "Hey";
string param2 = "You";
stirng param3 = "There";
// The delegate to call.
ThreadStart ts = delegate() { DoSomething(param1, param2, param3) };
// The thread.
Thread t = new Thread(ts);
// Run the thread.
t.Start();
댓글 없음:
댓글 쓰기