Мне не совсем понятно, сколько диспетчеров есть в приложении и как они связаны или ссылаются на потоки.
Как я понимаю, приложение WPF имеет 2 потока (один для ввода, другой для UI) и 1 диспетчер (связанный с UI-Thread). Что делать, если я создаю другой поток - позвольте ему "рабочий поток" - когда я вызываю Dispatcher.CurrentDispatcher
в рабочий поток, какой диспетчер я получу?
Другой случай:
Предположим, консольное приложение с 2 потоками - основной поток и входной поток. В основном потоке я сначала создаю входной поток, а затем вызываю Application.Run()
Thread thread = new Thread(new ThreadStart(UserInputThreadFunction));
thread.Start();
Application.Run();
Будет один диспетчер, верно? На входном потоке Dispatcher.CurrentDispatcher возвращает диспетчера основного потока? Или каков правильный способ получения экземпляра диспетчеру основного потока?
Может ли быть, что в приложении WPF есть более одного диспетчера? Есть ли какой-нибудь случай, было бы целесообразно создать другого диспетчера?