Как получить доступ к элементу управления WPF c # в streamовом безопасном режиме?
Я попытался использовать примеры из MSDN для этого, но они, похоже, применимы только к Windows Forms. Например, метод использования .InvokeRequired полагается на элемент управления Windows, однако этот метод недоступен для элементов управления WPF. Рабочий метод InvalidOperationException
также генерирует InvalidOperationException
Вызывающий stream не может получить доступ к этому объекту, потому что ему принадлежит другой stream.
Итак, как это можно сделать в контексте WPF?
- Как связать перечисление с элементом управления combobox в WPF?
- В WPF, каковы различия между атрибутами x: Name и Name?
- Как создать задачу (TPL), использующую stream STA?
- В WPF есть свойство DesignMode?
- INotifyPropertyChanged WPF
- Использование диспетчера C #
- В чем разница между StaticResource и DynamicResource в WPF?
- Убедитесь, что приложение не работает в течение определенного периода времени и блокирует его
- Как создать WPat Datagrid с неизвестным количеством столбцов
- Как я могу захватить событие KeyDown на странице WPF или объекте UserControl?
- Ввод текста заголовка WPF datagrid
- Пример использования гиперссылки в WPF
- Горизонтальная прокрутка для панели стека не работает
Вы просто хотите использовать метод Dispatcher.Invoke
(или asynchronous эквивалент Dispatcher.BeginInvoke
), который будет маршировать вызов в основной stream пользовательского интерфейса WPF.
Класс DependencyObject
содержит свойство Dispatcher
, что означает, что все элементы управления и другие объекты, которые наследуются от этого classа, также предоставляют это свойство, аналогично WinForms. Кроме того, объект Application
предоставляет доступ к диспетчеру.
Пример использования может быть следующим (в коде для Window
/ UserControl
):
this.Dispatcher.Invoke((Action)(() => { ... }));