Вместо создания статического класса TaskProgress
для наследования от DependencyObject
вы должны реализовать в нем INotiifyPropertyChanged
и вызвать событие PropertyChanged
из установщика свойства Instance
.
Это будет работать по двум причинам ...
DependencyObject
не зависит от потока и, следовательно, доступ к нему через какой-либо другой поток обязательно приведет к ошибке.
INotifyPropertyChanged.PropertyChanged
Событие внутренне делегировано диспетчеру пользовательского интерфейса с помощью инфраструктуры привязки WPF.Таким образом, простой myTaskProgress.Instance = value
автоматически обновит пользовательский интерфейс независимо от того, из какого потока он был сделан.
Обратите внимание, что INotifyPropertyChanged
как интерфейс, он не может быть реализован в статическом классе и не можетиметь статическое событие или статическое свойство.Вы должны иметь некоторый экземпляр TaskProgress
(например, myTaskProgress
выше), связанный с Label
.
Дайте мне знать, если это поможет.