1. 많은 UI 구성 요소에서 호출 스레드가 필요하므로 해당 스레드는 STA여야 합니다.
2. 다른 스레드가 이 개체를 소유하고 있어 호출한 스레드가 해당 개체에 액세스할 수 없습니다
전부 Cross Thread 문제로 메인쓰레드가 버튼A에 색상을 넣는 등의 작업을 하고 있을 때 서브쓰레드가 버튼A에 접근할 경우 충돌이 발생하는 문제
Dispatcher.CurrentDispatcher.InvokeAsync(delegate{
//To do
}, DispatcherPriority.Loaded);
Dispatcher.BeginInvoke(DispatcherPriority.Normal, delegate(){
// To do
});
나는 첫번째 방법을 사용했다.
메인쓰레드에서 파생된 쓰레드를 사용하는 방법이라고 한다.
InvokeAsync를 통해 비동기로 구현된다.
참고자료 이것저것 많이 봤음
[C#] WPF Thread https://techlog.gurucat.net/167
[WPF]Dispatcher와 UI Threading http://byung.egloos.com/v/4459989
[WPF] wpf BeginInvoke에서 람다식 쓰는 방법 구문 https://chanun.tistory.com/entry/WPF-wpf-BeginInvoke에서-람다식-쓰는-방법-구문 [차넌's]
WPF 멀티쓰레드 프로그래밍(Multi Thread), WPF에서 Dispatcher, BackgroundWorker http://ojc.asia/bbs/board.php?bo_table=WPF&wr_id=23
'C# > WPF' 카테고리의 다른 글
C# WPF 지정된 Visual이 이미 다른 Visual의 자식이거나 CompositionTarget의 루트입니다 (0) | 2021.10.25 |
---|---|
WPF 마우스 이벤트 (0) | 2020.09.03 |
WPF 지정한 요소가 이미 다른 요소의 논리자식입니다. 먼저 이 연결을 끊으십시오. (2) | 2020.03.27 |