Dev::DotNet/WPF
Window 를 특정 Thread 에서 위임하는 법
isfry
2016. 12. 28. 10:12
UI 의 변경은 보통 주 Thread에서 가능하고
다른 Thread에서 UI 의 변경은 invoke를 통해서 하게 된다.
WPF 의 경우도 다르지 않다.
하지만 특정 Window를 주 Thread가 아닌 별도 생성한 Thread에 아예 위임해버릴 수도 있다.
(보통 이렇게 사용할 경우는 없겠지만...)
Thread thread = new Thread(() => { Window myWnd = new MyWindow(); myWnd .Closed += (sender, e) => myWnd.Dispatcher.InvokeShutdown(); System.Windows.Threading.Dispatcher.Run(); }); thread.SetApartmentState(ApartmentState.STA); thread.Start();
이렇게 하면 저 안에서 생성된 Window는 닫힐 때까지,
주 Thread가 아닌 지금 새로 생성한 Thread에 속하여 실행되게 된다.