如何让计时器持续一分钟然后停止

M_K*_*M_K 2 c# windows-phone-7

我正在使用DispatchTimer每秒做一些事情,我怎样才能让它做一段时间,比如1分钟或2分钟?我需要花药嵌套的DispatcherTimer吗?

我的代码如下

System.Windows.Threading.DispatcherTimer dt = new System.Windows.Threading.DispatcherTimer();

    private void StartButton_Click(object sender, RoutedEventArgs e)
    {
        TimeSpan interval;
        interval = (TimeSpan)intervalPicker.Value;
        dt.Interval = interval;
        dt.Tick += new EventHandler(dt_Tick);
        dt.Start();
    }

    void dt_Tick(object sender, EventArgs e)
    {
       //Do Something
    }
Run Code Online (Sandbox Code Playgroud)

如果你能帮助我,我将不胜感激.

thu*_*eys 5

使用Stopwatch课程:

Stopwatch sw = new Stopwatch();

private void StartButton_Click(object sender, RoutedEventArgs e)
{
    sw.Start();
    ...
}

void dt_Tick(object sender, EventArgs e)
{
   // stops the timer after 66 seconds
   if(sw.ElapsedMilliseconds/1000 > 66)
   {
       dt.Stop();
       sw.Reset();
   }          
}
Run Code Online (Sandbox Code Playgroud)

  • 这是一个坏主意.如果计时器启动,比如说,在我们将时钟设置为夏令时之前三秒钟,那么计时器将运行超过一个小时.如果它在提前设置之前启动,那么计时器运行不到一分钟.如果用户改变时间,可能会发生同样的事情.最好在启动计时器时启动"秒表",然后检查"Elapsed"属性. (3认同)