2012-01-31 3 views
11

私はWindows Store AppでTimerを設定しようとしています。WinRTアプリケーションでタイマーを設定するにはどうすればよいですか?

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  
     } 

ボタンをクリックすると、このタイマーを設定する方法が呼び出されます。しかしTick用のEventhandlerが設定されていると、エラー が表示されます。 "保護されたメモリを読み書きしようとしましたが、他のメモリが壊れていることがよくあります。

Windows Storeアプリケーションでは、タイマを別に処理する必要がありますか?

+0

タイマーを提出するとどうなりますか?timer.Tick + = timer_Tick; timer.Interval =新しいTimeSpan(00、1、1);コンストラクタに移動します。また、bool enabled = timer.IsEnabled;何の効果もありませんか? –

+1

@lukas申し訳ありませんが、あなたの最初のポイントを取得していませんでした – Sap

+2

プライベートDispatcherTimerタイマー=新しいDispatcherTimer(); public YourClass() { timer.Tick + = timer_Tick; timer.Interval = new TimeSpan(00、1、1); } –

答えて

10

ソリューションは、

private DispatcherTimer timer = new DispatcherTimer(); 

方法の例のうち、タイマーを移動し、完全なコードのない理由が何であるかを伝えるために

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

ハードctorの中でそれを設定することですが、それはtimer_Tickの動作である可能性があります。

+0

欠点はUIスレッドで実行されることです。したがって、タイマーイベントが時間/ CPU消費タスクを実行している場合、UIは少しハングします – Tilak

+0

これが非同期で行われていない場合:) – 70sCommander

関連する問題