Обновление связанных элементов управления WPF из другого потока
В настоящее время я сталкиваюсь с проблемой обновления элементов управления WPF из рабочего потока.
После нескольких часов поиска в Google я надеюсь получить ответ здесь.
Ситуация:
- У меня действительно есть графический интерфейс
- Графический интерфейс имеет прикрепленную к нему viewmodel
- Видемодель содержит все свойства для привязки. Он содержит значения свойств int, float, bool и string, а также массив int [].
- Все свойства выглядят так:
private volatile string _InputTypeString = ""; public string InputTypeString { get { return _InputTypeString; } set { _InputTypeString = value; OnPropertyChanged("InputTypeString"); } }
- Все элементы управления привязаны к viewmodel с помощью XML-Привязок
- Когда я не использую обновления графического интерфейса, мой код работает нормально в течение нескольких часов, и как только я обновляю графический интерфейс, я сталкиваюсь с проблемами в течение нескольких минут.
Что я уже пробовал:
То, что я уже пробовал:
- сделайте все переменные объектов свойств изменчивыми
- делегаты через
Action b = delegate { windowmodel.Frame_Current = FrameX }; Application.Current.Dispatcher.Invoke(b, DispatcherPriority.Normal);
- защелкивания:
lock (windowmodel.AudioLevelArray)
Есть идеи, как сделать потокобезопасными свойства, связанные с графическим интерфейсом?
George Swan
Вы сообщаете о ходе выполнения вашего асинхронного метода или обновляете пользовательский интерфейс только после завершения вашего метода?
VR Karthikeyan
С какой реальной проблемой вы столкнулись при обновлении графического интерфейса, есть ли какое-либо исключение или сообщение об ошибке?
Richard Deeming
Репост
Вы уже опубликовали это на форуме C# :
https://www.codeproject.com/Messages/5481113/Update-bound-WPF-controls-from-another-thread.aspx[^]