事件处理程序的C#计时器

时间:2011-07-04 12:19:05

标签: c# timer

我目前有以下事件处理程序

WqlEventQuery query = new WqlEventQuery("__InstanceModificationEvent", 
new TimeSpan(0, 0, 1), "TargetInstance ISA \"Win32_NetworkAdapterConfiguration\"");

        ManagementEventWatcher eventWatcher = new ManagementEventWatcher(query);
        eventWatcher.EventArrived += new EventArrivedEventHandler(eventArrived);
        eventWatcher.Start();

 private void eventArrived(object sender, EventArrivedEventArgs e)
 {
    //Event Codes
 }

我需要帮助开发(一次)计时器。这是它应该如何工作。

  1. 当有事件时,计时器将开始运行!
  2. 因为事件可能发生很多次,如果计时器已启动,请不要再次启动计时器! (一次)
  3. 计时器持续时间应为5秒
  4. 在此期间(5秒),计时器事件必须枚举网络适配器的连接状态。
  5. 每个人对此问题的建议/帮助/建议/解决方案都将深表感谢。我对(一次)计时器的机制感到困惑!

1 个答案:

答案 0 :(得分:2)

也许这个伪代码有帮助:

myTimer.Interval = 5000;//5s
private void eventArrived(object sender, EventArrivedEventArgs e)
{
   if(!myTimer.Enabled) //if timer not running
      myTimer.Start();
}

private void myTimer_Tick(object sender, System.EventArgs e)
{
   //enumerate statuses every 5s
}