我已經創建了一個看門狗定時器(使用System.Windows.Forms.Timer),如果長時間沒有接收數據的小包到期觸發:集中停止的C#/啓動計時器
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 /操作系統密集型。
任何想法如何調用Timer.Stop()/Timer.Start()
這種方式可能會影響性能(就延遲而言)?
你願意做可能更好使用'System.Debug。秒錶「課程? – MattC 2012-02-09 18:45:35