두 개의 UI 스레드가 있습니다. 하나는 주 스레드이고 다른 하나는 ApartmentState가 STA 인 백그라운드 스레드입니다. 각 스레드는 자체 창을 만들고 배경 창에는 "취소"단추가 있습니다.WPF의 다중 스레드 UI
주 스레드는 사용량이 많고 완료하는 데 오랜 시간이 걸리는 기능이 있습니다. 일단 "취소"버튼을 클릭하면 주 스레드가 시간 소모적 인 기능을 중단해야합니다. (...) {
//Option A: Application.DoEvents(); //Option B: Dispatcher.Invoke to update UI in background thread if(cancel) return; //Stop the time-consuming function else DoSomething;
}
에 대한
이상한 것은 클릭 이벤트이다 : 아래
의견이 있으십니까?
둘째, 위의 문제를 해결하는 두 가지 방법이 있는데, 하나는 Application.DoEvents를 사용하고 다른 하나는 Dispatcher.Invoke를 이용하는 것입니다. 그러나 배경 스레드가 메시지를 즉시 처리 할 수없는 이유는 여전히 궁금합니다. 미리 감사드립니다.
WPF에'Application.DoEvents'가 없습니다 ... 어떻게 구현 했습니까? –
않습니다. 이벤트. lawd. – Will