로딩
요청 처리 중입니다...

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

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

안녕하세요, MoonLight입니다. C#에서 평소처럼 Control에 접근해서 이런저런 작업을 하려고 하는데, 아래와 같은 Error를 만나는 경우가 있습니다.

비교적 설명이 자세히 나와 있는데요, Control이 만들어진 Thread가 아닌, 다른 Thread에서 해당 Control에 Access하려고 하는 경우에 이런 Error가 발생합니다. 저 같은 경우엔 UI를 만든 Main Thread가 아닌, 작업 Thread에서 Main Thread UI를 변경하고자 할 때 이런 Error를 만났습니다.

해결 방법은 Simple합니다. delegate를 사용하면 됩니다. delegate는 주로 Windows Forms Application에서 사용되는데, UI를 다루는 과정에서 발생할 수 있는 Thread 간 통신 문제를 해결하기 위해 이용됩니다. Windows Forms은 Single Threaded Apartment(STA) Model을 사용하기 때문에, UI Control은 오직...

# Csharp # 컨트롤 # 액세스 # 스레드 # 메인 # UI # MethodInvoker # Invoke # InvalidOperationException # delegate # 크로스