我有一段使用秒表的代码,但是我可以使用秒表类每隔10秒运行一些逻辑。不幸的是,我不确定最好的方法。基本上,这就是我想要做的事情:
Stopwatch.start();
if(Stopwatch == 10seconds)
Do something here!
Else
Do something else!
任何人都可以帮忙吗?
答案 0 :(得分:15)
这完全不是StopWatch的用途;秒表用于进行性能测试的高精度定时。这就是它在Diagnostics命名空间中的原因。
如果您希望每十秒钟发生一次,那么创建一个Timer并为tick事件创建一个事件处理程序。每次定时器关闭时都会调用事件处理程序。
答案 1 :(得分:10)
这不是秒表课程的用途。使用System.Timer.Timer并订阅Elapsed event。
答案 2 :(得分:3)
你应该使用DispatcherTimer类。
来自MSDN文档的示例代码:
// DispatcherTimer setup
dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Interval = new TimeSpan(0,0,1);
dispatcherTimer.Start();
// System.Windows.Threading.DispatcherTimer.Tick handler
//
// Updates the current seconds display and calls
// InvalidateRequerySuggested on the CommandManager to force
// the Command to raise the CanExecuteChanged event.
private void dispatcherTimer_Tick(object sender, EventArgs e)
{
// Updating the Label which displays the current second
lblSeconds.Content = DateTime.Now.Second;
// Forcing the CommandManager to raise the RequerySuggested event
CommandManager.InvalidateRequerySuggested();
}
当然,您可能希望将时间跨度更改为10秒:
dispatcherTimer.Interval = New TimeSpan(0,0,10);
另一方面,如果你希望你的代码只是坐在那里什么也不做,可以说,10秒,你可以使用Thread.Sleep( new TimeSpan(0,0,10) )
但是,你应该避免使用这个选项。它通常不是一件好事({3}}
答案 3 :(得分:1)
请改用Timer。看一下喜欢的MSDN页面 - 它包含一个完整的例子。
编辑:目前尚不清楚你想做什么。如果您只是希望代码等待十秒钟,那么您可以使用System.Threading.Thread.Sleep(10000)。
答案 4 :(得分:1)
System.Timers.Timer timer;
//Set Timer
timer = new Sytem.Timers.Timer();
timer.Tick += new EventHandler(timer_tick);
timer.Interval = 10000; //10000 ms = 10 seconds
timer.Enabled = true;
public void timer_tick(object source, EventArgs e)
{
//Here what would you like to do every 10000 ms
}