2013-06-20 56 views
1

這是WP8項目。我有以下計時器每3秒「循環」。從另一個頁面停止計時器

private void temperatureTimer() 
{  
    System.Windows.Threading.DispatcherTimer dt = new System.Windows.Threading.DispatcherTimer();  
    dt.Interval = new TimeSpan(0, 0, 0, 0, 3000); // 3s 
    dt.Tick += new EventHandler(dt_Tick); 
    dt.Start();    
} 

void dt_Tick(object sender, EventArgs e) 
{ 
    var obj = App.Current as App; 
    if (obj.off == true) //global variable 
     dt.Stop(); 
    Temperature z = new Temperature(); //runs some code... 
} 

我想停止當用戶從另一個頁面單擊按鈕。

我試圖阻止它使用全局變量並將其設置爲true,當用戶單擊其他頁面上的按鈕但定時器仍然打開時。

+0

我很驚訝DispatcherTimer在頁面不活動時運行。也就是說,全局變量應該起作用。你確定計時器不停地滴答滴答嗎?如果你在停止之後添加'return',你有沒有相同的行爲? 'if(obj.off == true){dt.Stop();返回; }' –

+0

EventHandler可以用來從另一個頁面通知第一頁。 – user2323308

回答

0

全局變量有效。我不得不重建我的項目,出於某種原因,它不能像它應該那樣工作。

0

要麼聲明你的DispatcherTimer爲靜態類成員,要麼有靜態Stop()方法來阻止它。