0


0

経過タイマーイベントのセットアップ

最後のパケットが受信されてから新しいパケットが到着するまでの時間差を測定する必要があります。 私は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 Answer


1


`DateTime.Now`を保存し、保存されている値と比較する必要があります。

例えば:

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


1


タイマーを使用する代わりに、System.Diagnostics.Stopwatchクラスをチェックアウトすることもできます。