BeginInvoke
-
Invoke, BeginInvoke, 크로스 스레드 예외C# 2022. 1. 24. 16:36
[Invoke] - 스레드를 따로 분리하지 않고 시간이 오래 걸리는 계산을 진행하면 그동안 UI 핸들링을 담당하는 MainThread가 UI 컨트롤을 핸들링 하지 못하기 때문에, 계산하는 동안 UI가 멈추고, 제어가 불가능 하며 응답 없음을 출력할 때도 있다. - 이를 해결하기위해 thread 사용하게 되는데 코딩하여 실행하면 관련 Exception을 보게 된다. - 메인 스레드가 아닌 다른 스레드에서 ui 컨트롤에 접근하려고 하기 때문이다. - 이 때 invoke 를 사용하여 실행하려고 하는 메소드의 대리자(delegate)를 실행시키면 해결할 수 있다. -> Control의 Invoke는 다른 스레드에서 직접 접근할 수 없는 윈폼 컨트롤 작업에 대해 Invoke를 통해 작업 자체를 대리자(delega..