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();
}

我的第一个问题是:可以在计时器到达下一个刻度之前停止计时器吗?或者换句话说,可以立即停止计时器?

第二个问题:我想改变间隔。我是否需要停止它并重新启动它才能识别新的间隔?我看到有一个间隔属性,但它不允许我设置值,只能获取它。

4

1 回答 1

5

答案1:

是的,可以timer立即停止。你可以通过调用它的Stop()方法来停止它:

dt.Stop();

答案 2:

不,您不需要更改Stop其. 这就是你可以设置新的方式(你已经做了同样的事情):timerintervalinterval

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

当您设置 时interval,它不会自行重启,它只是跟随新的interval.

详情可以看以下链接: DispatchTimer

更新:

根据您的代码停止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 回答