2011-07-04 126 views
1

我现在有下面的事件处理C#计时器事件处理程序

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秒)期间,如果网络适配器的连接状态必须枚举定时器事件。

大家对这个问题的建议/帮助/建议/解决方案将深表感谢。我很困惑(一次)定时器的机制!

+0

你已经有了步骤该怎么办,所以只写代码。你有没有编写代码或作业的问题? – Reniuz

+0

问题是我不知道如何编码!任何指引? – Derek

回答

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 
}