2011-07-15 89 views
2

我的應用程序處理實時數據。當打開Form時,會創建一個BackgroundWorker並提取數據並執行處理。在BackGroundWorker中使用計時器

現在我希望整個循環運行在5秒循環只要Form是活動或打開。即如果用戶打開form1並且在5秒鐘內仍然處於打開狀態,那麼BackgroundWorker將再次進行所有抓取和處理。現在,如果用戶關閉form1並打開form2,則會創建一個新的BackgroundWorker,並執行與form2相關的處理。

我已完成BackgroundWorker部分,但無法決定如何循環BackgroundWorker。我應該在BackgroundWorker內創建一個每5秒觸發一次的計時器嗎?或者我可以查看BackgroundWorker,只需要定時器?

編輯:我與BGW裏面定時器。因此,每5秒計時器呼叫BGW,如果BGW忙,則等待它完成。

回答

1

耶當然你也可以使用定時器對象做如下圖所示

System.Timers.Timer timer = new System.Timers.Timer(); 
timer.Elapsed += new ElapsedEventHandler(timer_Elapsed); 
timer.Interval = 5000; 
timer.Start(); 

private void timer_Elapsed(object sender, ElapsedEventArgs e) 
{ 
    //do the logic.. 
} 
+0

等於30秒爲什麼5000毫秒? –

+0

對不起,這是一個錯誤。 –