【发布时间】:2012-02-09 18:42:18
【问题描述】:
我创建了一个看门狗定时器(使用 System.Windows.Forms.Timer),如果长时间没有收到小数据包,就会触发:
using System.Windows.Forms;
public class Watchdog
{
private Timer Timer;
public void Go()
{
Timer.Start();
}
public void Reset()
{
Timer.Stop();
Timer.Start();
}
private void OnTimerExpired(object State)
{
Timer.Stop();
DoSomething();
}
public Watchdog()
{
Timer = new Timer();
Timer.Tick += new EventHandler(OnTimerExpired);
Timer.Interval = (1000 * Timeout);
}
}
主代码调用Go(),然后每收到一个数据包就调用Reset()。如果计时器到期,则调用OnTimerExpired()。
由于每秒可能接收数百个数据包,并且由于应用程序的主要工作是响应这些数据包,我开始怀疑重置计时器是否会占用大量 CPU/OS。
知道以这种方式调用Timer.Stop()/Timer.Start() 会如何影响性能(就延迟而言)?
【问题讨论】:
-
使用
System.Debug.Stopwatch类会更好吗?
标签: c# performance timer