В моем приложении WPF мне нужно выполнить дорогостоящую операцию в потоке пользовательского интерфейса (назовем это ExpensiveUIOperation()
), и я хочу обновлять пользовательский интерфейс для отслеживания его прогресса.
Дляотслеживать прогресс, у меня просто есть TextBlock
, чье свойство Text
связано со свойством целочисленной зависимости PercentageComplete
.Во время ExpensiveUIOperation()
я просто устанавливаю значение PercentageComplete
как требуется.
Теперь я достаточно разбираюсь в многопоточности, чтобы знать, что если бы я просто запустил ExpensiveUIOperation()
в своем потоке пользовательского интерфейса, TextBlock не отображается , чтобы быть в курсе, поскольку поток пользовательского интерфейса будет блокирован, что приведет к остановке любых обновлений интерфейса.
И поэтому я подумал, что могу сделать это асинхронно, как это:
Но это все еще не работает.Текстовый блок не обновляется визуально до завершения операции.
Есть ли способ сделать это?
К сожалению, в этой ситуации я не могу использовать фоновый поток, так какоперация интенсивно использует объекты, принадлежащие потоку пользовательского интерфейса.