3

Windows Phone 8 プロジェクトに次のタイマーがあります。

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

の最初の質問は、次のティックに達する前にタイマーを停止することは可能ですか? つまり、タイマーを瞬時に止めることは可能ですか?

2 番目の質問: 間隔を変更したい。新しい間隔を認識するために、停止してから再開する必要がありますか? interval プロパティがあるようですが、値を設定することはできず、取得することしかできません。

4

1 に答える 1

5

答え 1:

はい、timerすぐに停止できます。Stop()メソッドを呼び出すことで停止できます。

dt.Stop();

答え 2:

Stopいいえ、timer変更する必要はありませんinterval。これは、新しいものを設定する方法ですinterval(すでに同じことをしています):

dt.Interval = new TimeSpan(0, 0, 1); // one second

を設定するintervalと、それ自体は再起動せず、新しいinterval.

詳細については、次のリンクを参照してください。 DispatcheTimer

アップデート:

を停止するコードによるとtimer

private void turnoff(){ dt.stop();}

効果がないでしょう。あなたtimerは別のメソッドにあるため、そのメソッドの外でスコープが終了しているため、別のメソッドで呼び出すことはできません。これを行うには、次のようにグローバルにする必要があります。

System.Windows.Threading.DispatcherTimer dt; //declaration outside the method
private void temperatureTimer()
{
    dt = new System.Windows.Threading.DispatcherTimer(); //initialization inside a method
    dt.Interval = new TimeSpan(0, 0, 1, 0, 0); 
    dt.Tick += new EventHandler(dt_Tick);
    dt.Start();
}

private void turnoff() //now your this method will work to stop the timer
{ 
    dt.stop();
}
于 2013-07-05T13:55:36.690 に答える