Как получить доступ к элементу управления WPF c # в streamовом безопасном режиме?

Я попытался использовать примеры из MSDN для этого, но они, похоже, применимы только к Windows Forms. Например, метод использования .InvokeRequired полагается на элемент управления Windows, однако этот метод недоступен для элементов управления WPF. Рабочий метод InvalidOperationException также генерирует InvalidOperationException

Вызывающий stream не может получить доступ к этому объекту, потому что ему принадлежит другой stream.

Итак, как это можно сделать в контексте WPF?

Вы просто хотите использовать метод Dispatcher.Invoke (или asynchronous эквивалент Dispatcher.BeginInvoke ), который будет маршировать вызов в основной stream пользовательского интерфейса WPF.

Класс DependencyObject содержит свойство Dispatcher , что означает, что все элементы управления и другие объекты, которые наследуются от этого classа, также предоставляют это свойство, аналогично WinForms. Кроме того, объект Application предоставляет доступ к диспетчеру.

Пример использования может быть следующим (в коде для Window / UserControl ):

 this.Dispatcher.Invoke((Action)(() => { ... })); 
  • Конвертер связыванияПараметр
  • Как настроить привязку ширины столбца ColumnDefinition или RowDefinition?
  • Печать документа WPF FlowDocument
  • Привязать к значению, определенному в настройках
  • Вызывающий stream не может получить доступ к этому объекту, потому что ему принадлежит другой stream
  • Использование SynchronizationContext для отправки событий обратно в пользовательский интерфейс для WinForms или WPF
  • Установить цвет фона текстового поля WPF в коде C #
  • WPF TextBox Validation C #
  • Установите фокус на текстовое поле в WPF
  • Как получить TreeViewItem из элемента HierarchicalDataTemplate?
  • Как установить стиль WPF Window Style в app.xaml?
  • Давайте будем гением компьютера.