C# 如果在过去5秒内未调用方法,如何引发事件?

C# 如果在过去5秒内未调用方法,如何引发事件?,c#,C#,对不起,这个问题可能太简单了,但我不知道如何实现。如果在一定时间内没有调用某个方法,我需要在收到此事件时引发一个事件,我将尝试解决此问题。这是一种连接问题,我需要得到通知来尝试解决它-我将改变连接方法 public void MethodThatShouldBeCalledFrequently // acutally datagram from UDP received { // if not called for 5 seconds than raise event } public

对不起,这个问题可能太简单了,但我不知道如何实现。如果在一定时间内没有调用某个方法,我需要在收到此事件时引发一个事件,我将尝试解决此问题。这是一种连接问题,我需要得到通知来尝试解决它-我将改变连接方法

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

当调用应该频繁调用的方法时,也许可以使用标志并将其设置为true

     bool wasCalled = false;
    public void MethodThatShouldBeCalledFrequently // acutally datagram from UDP received
     {
        wasCalled = true;
      }
每5秒使用另一种方法检查标志是否为真,如果为假,则引发事件。

这是怎么回事

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);
    }
}

你不能在这个方法中设置新的计时器吗?@anuragsn7我可以在这个方法中做任何事情method@anuragsn7我需要类似秒表的东西,但反之亦然,它应该倒计时,从5秒开始,当0秒时,它应该引发一个事件。每次调用方法时,我都应该将秒表重置为5秒。我有义务每次创建新的计时器吗?我可以重复使用计时器吗?因为方法每秒被调用数千次…@javapowered您没有-我编辑了我的答案,所以计时器只创建一次,然后重新启动。起初我认为计时器无法重新启动,但一个快速的示例证明了这一点:谢谢!将答案标记为正确,除非有人能够提出更美好的建议: