우리는 자체 사용자 정의 스레드에서 코드를 실행해야하는 라이브러리를 제공합니다. 완료되면이 스레드가 Dispatcher
(System.Windows.Threading.Dispatcher
)을 통해 콜백 (이벤트 처리기)을 호출하기를 원합니다. 라이브러리 사용자는 Dispatcher를 사용하여 이벤트 처리를 디스패치합니다.모든 WinRT/Windows 코어 스레드에는 Dispatcher가 있습니까?
우리는 항상 CoreApplication.MainView.CoreWindow.Dispatcher
으로 발송할 수 있지만 일부 프로그램 (예 : Windows 10 IoT 핵심 앱)은 UI를 제공하지 않으므로 기본 창이 없습니다.
사용자가 System.Windows.Threading.Dispatcher.CurrentDispatcher을 참조하여 스레드의 Dispatcher
을 얻을 수 있습니까? 또는 모든 스레드에 Dispatcher가있을 수 있습니까?
편집 : 다음은이 질문의 배경입니다. 다행히 질문을 이해하기 쉽게 만듭니다. https://github.com/getsenic/nuimo-windows/issues/2
UI 스레드에서 이벤트 처리기를 실행 하시겠습니까? 오히려 일부 객체가 백그라운드 (비 UI) 스레드에서 이벤트를 발생시키는 경우가 일반적입니다. 이벤트 핸들러에서 액세스 UI 요소가 필요하면 라이브러리 사용자가 Dispatcher를 사용하여이 이벤트를 처리해야합니다. – RavingDev
WPF 동작은 다소 비현실적이며 문제가 많은 프로그래머가 많습니다. 여기에 대한 많은 질문이 있습니다. WinRT는 실수를 되풀이하지 않았으며 창에서 발송자 만 얻을 수 있습니다. 논리적 인 접근 방식은 윈도우가 디스패치 루프를 가진 스레드에 의해 만들어 졌을 때만 작동 할 수 있습니다. 창이 없다면 더 이상 특정 스레드에서 코드를 실행할 필요가 없습니다. –
UI 스레드에서 이벤트를 발생시키는 방법은 한 가지가 있습니다. 그러나 객체가 UI 스레드에서 생성되거나 초기화되어야합니다. 그것은 당신의 경우입니까?개체가 UI 스레드에서 생성 된 경우에만 작동합니다. – RavingDev