상세 컨텐츠

본문 제목

C# - 크로스 스레드 작업이 잘못 되었습니다.

컴퓨터 언어/C#

by cepiloth 2017. 12. 30. 14:47

본문

728x90
반응형

.Net Framework 2.0기반에서 Windows Forms UI 개발을 하다보면


'크로스 스레드 작업이 잘못되었습니다. '...'컨트롤이 자신이 만들어진 스레드가 아닌 스레드에서 액세스되었습니다.' 라는 에러를 간혹 만나게 되는데요. 이 에러는 왜 나는 것일까요?


 이 에러는 Windows Forms개발 환경에서 특정 컨트롤에 대해 두개 이상의 스레드가 액세스 하려고 할 경우에 발생됩니다.


 즉, 두 개 이상의 스레드가 해당 컨트롤에 동시 접근해서 뭔가를 하려고 하게 되면 경합 상태, 교착 상태 등의 뒤죽박죽 상태가 되어 스레드 관련 버그가 발생할 가능성이 생기게 됩니다.


이에 .Net Framework에서는 이런 상황을 관찰하고 있다가 앗! 여러 스레드가 한 컨트롤을 동시에 괴롭힐려고 하네?라고 감지하게 되고, 'InvalidOperationException'을 발생시켜 위와 같은 에러 메시지를 띵~하고 사용자에게 보여주게 됩니다.


form Load 시 CheckForIllegalCrossThreadCalls 속성을 false 를 하면 크로스 스레드 오류를 무시 합니다.

그리 좋은 방법은 아니므로 사용빈도가 높은 폼에서는 사용을 지양 합니다.


풀소스 경로 : https://github.com/cepiloth/LearningCSharp/blob/master/LearningCSharp/Form1.cs

728x90
반응형

관련글 더보기

댓글 영역