0

おそらく単純すぎる質問については申し訳ありませんが、これを実装する方法がわかりません。特定のメソッドが特定の時間呼び出されなかった場合は、イベントを発生させる必要があります(このイベントを受け取ったら、問題のトラブルシューティングを試みます。これは一種の接続の問題であり、解決を試みるために通知を受ける必要があります-i接続方法を変更します。)

public void MethodThatShouldBeCalledFrequently // acutally datagram from UDP received
{
    // if not called for 5 seconds than raise event 
}
public event EventHandler</*no parameters*/> MethodNotCalledForFiveSeconds; // connection problem, switch from UDP to TCP
4

2 に答える 2

0

たぶん、MethodThatShouldBeCalledFrequentlyが呼び出されたときに、フラグを使用してtrueに設定できます。

     bool wasCalled = false;
    public void MethodThatShouldBeCalledFrequently // acutally datagram from UDP received
     {
        wasCalled = true;
      }

別の方法を使用して、フラグがtrueまたはfalseであるかどうかを5秒ごとに確認し、falseである場合は、イベントを発生させます。

于 2012-04-08T07:31:19.993 に答える
0

これはどうですか?

public class Program
{
    private Timer timer;

    public Program()
    {
       InitializeTimer();
       StartTimerFromBeginning();
    }

    public void MethodThatShouldBeCalledFrequently()
    {
       StartTimerFromBeginning();
    }

    public event EventHandler MethodNotCalledForFiveSeconds;

    private void InitializeTimer()
    {
       timer = new Timer(5000);
       timer.Elapsed += HandleTimerElapsed;
    }

    private void StartTimerFromBeginning()
    {
       timer.Stop();
       timer.Start();
    }

    private void HandleTimerElapsed(object sender, ElapsedEventArgs e)
    {
       MethodNotCalledForFiveSeconds(this, EventArgs.Empty);
    }
}
于 2012-04-08T07:38:08.827 に答える