윈폼이나 WPF 에서 TextBox, ListView, Label 과 같은 컨트롤을 다른 스레드에서 접근하거나 변경하면
UI 쓰레드에 반영이되거나 Cross Thread Exception 이 발생한다.
Invoke (BeginInvoke)나 BackgroundWorker를 사용해야한다.
Invoke는 폼이나 컨트롤은 다 가지고 있다.
Invoke에 람다식을 넣어도 무방
-> 버전이 낮으면 람다식이 안되는듯, new MethodInvoker(() => { }) 같이 Method Invoker 를 넣어주자
BackgroundWorker는 쓰레드 대신? 사용해서 작업을 맞기면 된다.
BackgroundWorker은 다음 이벤트를 가지고있다.
1. DoWork 백그라운드 작업
2. ProgressChanged 작업 경과 및 상태 변화 보고
3. RunWorkerCompleted 작업 완료시 호출
728x90
'프로그래밍 언어 노트 > C#' 카테고리의 다른 글
[UWP] 사용자 라이브러리 UWP 에서 사용 (0) | 2019.12.12 |
---|---|
[UWP] 브로드 파일 권한 획득 [제한된 접근 권한 값] 사용 (0) | 2019.12.12 |
[UWP] Fullscreen (0) | 2019.08.24 |
[UWP] UWP 를 위한 2D 렌더링 엔진 Win2D (0) | 2019.08.24 |
[C#] C# 으로 작성하는 풀스택 웹앱 Blazor (0) | 2019.07.09 |