Обновление пользовательского интерфейса приложения Магазина Windows

Я пишу игрушечное приложение 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, а не сам графический интерфейс, Я не могу понять это, но я думаю, что решение должно использовать что-то вроде этого .

7
задан Community 23 May 2017 в 11:43
поделиться