학습목표: 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);

}

+ Recent posts