Я пишу игрушечное приложение Windows Store App для Windows 8.
У него всего одна xaml-страница с TextBlock
.Страница имеет класс MyTimer as DataContext
:
this.DataContext = new MyTimer();
MyTimer
реализует INotifyPropertyChanged
, а обновление свойства Time
производится с помощью таймера:
public MyTimer(){
TimerElapsedHandler f = new TimerElapsedHandler(NotifyTimeChanged);
TimeSpan period = new TimeSpan(0, 0, 1);
ThreadPoolTimer.CreatePeriodicTimer(f, period);
}
с
private void NotifyTimeChanged(){
if (this.PropertyChanged != null){
this.PropertyChanged(this, new PropertyChangedEventArgs("Time"));
}
}
TextBlock
имеет привязку данных по времени
Когда я запускаю приложение, у меня есть следующее исключение:
System.Runtime.InteropServices.COMException was unhandled by user code
С сообщением
Приложение вызвало интерфейс, который был упорядочен для другой ветки. (Исключение из HRESULT: 0x8001010E (RPC_E_WRONG_THREAD))
Настоящая проблема в том, что я обновляю свойство класса MyTimer, а не сам графический интерфейс, Я не могу понять это, но я думаю, что решение должно использовать что-то вроде этого .