Абсолютно Dispatcher
- это единственный способ сделать что-то (в определенной теме), когда мы работаем с многопоточностью в WPF!
Но для работы с Dispatcher необходимо знать 2 вещи:
- Слишком много способов использовать Dispatcher, например Dispatcher_Operation,
[window.dispatcher] или т. д.
- Мы должны
call dispatcher in the main thread of app
(эта нить должна быть нитью STA)
Так например: если мы хотим показать другое окно [wpf] в другом потоке, мы можем использовать этот код:
Frmexample frmexample = new Frmexample();
Frmexample .Dispatcher.BeginInvoke
(System.Windows.Threading.DispatcherPriority.Normal,
(Action)(() =>
{
frmexample.Show();
//---or do any thing you want with that form
}
));
Подсказка: Remember - we can't access any fields or properties from out dispatcher, so use that wisely