设置已用的计时器事件

时间:2010-10-07 14:43:14

标签: c# .net timer

我需要测量收到最后一个数据包到新数据包到达之间的时间差。我已尝试在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));
                }
            }

我最初拥有它,以便在间隔时间长度之后计时器过去时将调用一个事件。但意识到计时器将等待间隔的长度,然后调用该事件。我需要弄清楚的是,我能否找出数据包最后到达的时间与新数据包到达时的区别。如果我可以,那么我需要根据间隔值对其进行评估,如果它更大,则调用另一个可以完成某些工作的方法。

我的大脑已经死了,试图弄清楚这一点,所以任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:1)

您应该存储DateTime.Now,然后与存储的值进行比较。

例如:

var lastTime = DateTime.Now;
//Do things...
if ((DateTime.Now - lastTime).TotalSeconds > 5)
    //Do other things

答案 1 :(得分:1)

您可能想要查看System.Diagnostics.Stopwatch类而不是使用计时器