응용 프로그램에있는 Dispatcher의 수와 스레드와의 관련성 또는 스레드로부터 참조되는 방법은 완전히 분명하지 않습니다.WPF의 Dispatcher to Thread 관계
알다시피, WPF 응용 프로그램에는 2 개의 스레드 (입력 용, UI 용)와 1 개의 디스패처 (UI 스레드에 연결됨)가 있습니다. 다른 스레드를 생성하면 "worker thread"라고 부르 자. worker thread에서 Dispatcher.CurrentDispatcher
이라고 부르면 디스패처가 나옵니까?
또 다른 경우 : 메인 스레드와 입력 스레드 인 2 개의 스레드가있는 콘솔 응용 프로그램을 가정하십시오. 메인 스레드에, 나는 먼저 입력 스레드를 생성하고 난 Application.Run()
Thread thread = new Thread(new ThreadStart(UserInputThreadFunction));
thread.Start();
Application.Run();
오른쪽 하나 디스패처가있을 것입니다 전화? 입력 스레드에서 Dispatcher.CurrentDispatcher가 주 스레드의 디스패처를 반환합니까? 또는 주 스레드의 디스패처로 인스턴스를 가져 오는 올바른 방법은 무엇입니까?
WPF 응용 프로그램에 둘 이상의 디스패처가있을 수 있습니까? 어쨌든 다른 디스패처를 만드는 것이 합리적일까요?
그래서 각 스레드마다 실행 루프가 있습니까? 나는 성능상의 이유로 그걸 상상할 수 없다. – j00hi
Dispatcher는 요청에 따라 생성됩니다. 즉, Dispatcher.CurrentDispatcher를 호출 할 때 Dispatcher가 아직없는 경우 생성됩니다. –
그래서 작업자 스레드에서 Dispatcher.CurrentDispatcher를 호출하고 (작업자 스레드의 디스패처를 만들 때) 해당 작업자 스레드의 이벤트를 구독 할 때 해당 이벤트를 수신하려면 Dispatcher.Run()을 호출해야합니까? ? – j00hi