2

我正在使用 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
    }

如果您能帮助我,我将不胜感激。

4

2 回答 2

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();
   }          
}
于 2012-04-12T21:53:08.230 回答
1

Cimbalino Windows Phone 工具包(在NuGet中可用)包含一个带有 BeginInvokeAfterTimeout() 方法的 DispatcherExtensions 类,该方法在指定的超时后执行一个 Action。

如果您愿意,您可以从源代码中复制DispatcherExtensions文件并在您自己的项目中使用它。

于 2012-04-12T21:54:33.037 回答