Как установить таймеры в приложении WinRT? - PullRequest
11 голосов
/ 31 января 2012

Я пытаюсь установить таймер в моем приложении для Магазина Windows.

    public void Start_timer()
    {

        Windows.UI.Xaml.DispatcherTimer timer = new DispatcherTimer();           
        timer.Tick += new Windows.UI.Xaml.EventHandler(timer_Tick);
        timer.Interval = new TimeSpan(00, 1, 1);
        bool enabled = timer.IsEnabled;              // Enable the timer
        timer.Start();                              // Start the timer      
      }

При нажатии кнопки я вызываю вышеуказанный метод для установки этого таймера. Но когда Eventhandler для Tick установлен, я получаю ошибку «Попытка чтения или записи защищенной памяти. Это часто свидетельствует о повреждении другой памяти».

Нужно ли по-разному обрабатывать таймеры в приложениях Магазина Windows?

1 Ответ

10 голосов
/ 03 февраля 2012

Решение состоит в том, чтобы вывести таймер из метода, например

private DispatcherTimer timer = new DispatcherTimer();

и установить его в ctor

public TheClass()
{
    timer.Tick += timer_Tick; 
    timer.Interval = new TimeSpan(00, 1, 1);
    timer.Start();
}

Трудно сказать, в чем причина без полногокод, но это может быть поведение timer_Tick.

...