Form thread에서 다른 thread를 생성하였을 경우,

다른 thread가 Form thread의 변수를 억세스 할 경우

"크로스 스레드 작업이 잘못되었습니다" 라는 에러를 냅니다.

이 경우 두가지 해결 방법이 있습니다.

1. 크로스 스레드 억세스를 무시하도록 설정

CheckForIllegalCrossThreadCalls = false;

라고 초기화 부분에 적으면 됩니다.

2. Invoke 플래그 사용법

아래와 같이 InvokeRequired 플래그를 써서 억세스 하면 됩니다.

Control ctrl 에는 변수 명을 쓰면 됩니다.

private void setText(Control ctrl,string txtValue)
{
if (ctrl.InvokeRequired)
{
Ctrl_Involk CI = new Ctrl_Involk(setText);
ctrl.Invoke(CI, ctrl, txtValue);
}
else
{
ctrl.Text = txtValue;
}

}


Posted by 벅스바니
,