我需要測量收到最後一個數據包和新數據包到達之間的時間差。我已經使用在C#中Timer類這樣的嘗試:設置流逝的計時器事件
while (listening)
{
if (hB != null)
{
interval = hB.GetHBInterval();
aTimer = new System.Timers.Timer(interval+5);
Console.WriteLine("Interval is: {0}", interval);
byte[] bytes = listener.Receive(ref groupEP);
DecodeUDPMessage(Encoding.UTF8.GetString(bytes, 0, bytes.Length));
}
else
{
byte[] bytes = listener.Receive(ref groupEP);
DecodeUDPMessage(Encoding.UTF8.GetString(bytes, 0, bytes.Length));
}
}
我本來就這樣,如果間隔的時間長度後,計時器經過事件將被調用。但意識到計時器將等待間隔的長度,然後調用事件。我需要弄清楚的是,我可以計算出一個數據包的最後時間和新數據到達的時間差異。如果我可以,那麼我需要根據區間值對它進行評估,如果它更大,請調用另一種方法來完成一些工作。
我的大腦已經死亡,試圖找出這一點,所以任何幫助將不勝感激。
問題是,是應該在以後運行的代碼部分System.Diagnostics.Stopwatch類定時器已被設置將不會執行,直到收到另一個數據包。那麼,我該如何繼續檢查以查看已經過了多久?我應該把它放在另一個線程上,那麼如果發現一個數據包,請重新啓動計時過程並重復此操作? – stuartmclark 2010-10-07 15:11:42
你想要什麼時候運行該功能? – SLaks 2010-10-07 15:18:18
該函數只應在已經通過的時間大於間隔的時間時運行。這意味着間隔時間已經結束,您現在應該會收到另一個數據包。如果在時間間隔內沒有收到此數據包,請調用該函數請求數據包。 – stuartmclark 2010-10-07 15:23:13