카테고리 없음
DevExpress(winform) - Cross Thread Error
수박 서리
2024. 4. 24. 09:44
WinForm 동작 중에 control를 수정하려고 하면 아래와 같은 에러가 발생했다.
발생원인)
구글링을 통해 아래와 같읕 이유로 에러가 발생한다고 한다.
폼 구동 시 실행되는 하나의 쓰레드에서 Winform 컨트롤을 관리하게 되는데 해당 특정 스레드가 관리하고 있는 컨트롤을 다른 스레드가 액세스하였을 때 발생한다.
다시 말하면 winform 컨트롤을 생성한 스레드가 아닌 다른 스레드가 속성을 바꾸는 작업을 요청했을 때 크로스 스레드 예외가 발생하는 것이다.
근데, 크로스 스레드는 특이한게 Debug모드에서만 실행되고 Release모드에서는 실행이 안된다고 한다.
그 이유를 찾아봤는데 Release모드는 옵션값이 Default로 checkForIllegalCrossThreadCalls = false;가 되어있어서 그렇고 해당 값을 true로 바꾸면 Release모드에서도 오류를 발생시킬 수 잇다고 한다.
출처: https://jeongkyun-it.tistory.com/59 [나의 과거일지:티스토리]
해결방안) InvokeRequired
if (InvokeRequired)
{
this.Invoke(new Delegate());
}
}
위오 같은 식으로 InvokeRequired조건문을 추가해주고 델리게이트를 Invoke해주자