2011-07-04 123 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 
}