프로그래밍/.Net
Thread에서 Invoke 사용하기
강태공97
2014. 1. 17. 20:58
학습목표: Cross-Thread 문제로
Main Form에서 사용하고있는 control들을 Sub로 생성시킨 Thread에서
사용하는 방법을 알아보자
Thread g_SubThread = new Thread(AddTexMsg_Thread);
g_SubThread.Start();
public void AddTexMsg_Thread()
{
string sBuf = string.Format("Example... Date:{0}", DateTime.Now.ToString());
// 출력하고자 하는 Control에 invoke(MethodInvoker(delegate) 를 설정한다
// richtextbox가 invoke가 필요한 사항이면, 즉 Main Thread에서 RichEdit Control를
// 제어하고 있는데, 다른 Thread에서 해당 RichEdit를 제어하고 싶은 경우
// Cross-Thread error가 발생하는데 이를 해결하기 위해 invoke 방식을 사용.
if (richDeviceLog.InvokeRequired)
{
richDeviceLog.Invoke(new MethodInvoker(delegate()
{
richDeviceLog.AppendText(sTbuf + Environment.NewLine);
}));
}
else
richDeviceLog.AppendText(sTbuf + Environment.NewLine);
}