我需要测量收到最后一个数据包到新数据包到达之间的时间差。我已尝试在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));
}
}
我最初拥有它,以便在间隔时间长度之后计时器过去时将调用一个事件。但意识到计时器将等待间隔的长度,然后调用该事件。我需要弄清楚的是,我能否找出数据包最后到达的时间与新数据包到达时的区别。如果我可以,那么我需要根据间隔值对其进行评估,如果它更大,则调用另一个可以完成某些工作的方法。
我的大脑已经死了,试图弄清楚这一点,所以任何帮助都会非常感激。
答案 0 :(得分:1)
您应该存储DateTime.Now
,然后与存储的值进行比较。
例如:
var lastTime = DateTime.Now;
//Do things...
if ((DateTime.Now - lastTime).TotalSeconds > 5)
//Do other things
答案 1 :(得分:1)
您可能想要查看System.Diagnostics.Stopwatch类而不是使用计时器