我需要幫助爲我的應用程序設置特定類型的計時器。我的情況是這樣的:需要計時器在特定時間和每5分鐘直到作業完成時觸發
我想在一天的特定時間運行一個計時器(比如4:00 AM)。然後,該計時器執行許多不同的事件,每個事件都會關閉,並從數據庫中獲取數據並對其進行處理(使用後臺工作人員)。所有不同的事件需要不同的時間完成(可能是30秒,可能是5分鐘)。我想每隔5分鐘持續輸入計時器事件,以檢查是否所有事件都已完成。如果是這樣,請停止定時器,並在第二天早上4:00再次重啓,等等。
所以這個過程是這樣的:
上午4點 - 啓動計時器,並啓動背景工人
上午04時05分 - 再次檢查,看看是否進程已完成(如果是的話,停止定時器)
04:上午10點 - 再次檢查過程是否已完成(如果是,請停止計時器)
依此類推......
我已經有了處理我的數據庫信息的後臺工作程序代碼。所以我只需要幫助建立計時器。
到目前爲止,我有我的Tick
事件如下:
Private Sub tmr_Maintenance_Tick(sender As Object, e As EventArgs) Handles tmr_Maintenance.Tick
Dim CurrentTime As Date
Dim CurrHour As Integer
CurrentTime = DateTime.Now
CurrHour = CurrentTime.Hour
'Automatic Sales Import
With My.Settings
If CurrHour = 4 Then
If Not .Maintenance_Ran Then
CreateLog("Maintenance Started")
If Not .Yesterdays_Sales_Imported Then
CreateLog("Importing Yesterday's Sales From Portal")
If Not YesterdaysSales_Worker.IsBusy Then YesterdaysSales_Worker.RunWorkerAsync()
End If
If Not .WTD_Sales_Imported Then
CreateLog("Importing Week To Date Sales From Portal")
If Not WeekToDateSales_Worker.IsBusy Then WeekToDateSales_Worker.RunWorkerAsync()
End If
If Not .LW_Sales_Imported Then
CreateLog("Importing Last Week Sales From Portal")
If Not LastWeekSales_Worker.IsBusy Then LastWeekSales_Worker.RunWorkerAsync()
End If
If .Yesterdays_Sales_Imported = True And .WTD_Sales_Imported = True And .LW_Sales_Imported = True Then
.Maintenance_Ran = True
End If
End If
Else
.Maintenance_Ran = False
End If
End With
My.Settings.Save()
End Sub
任何幫助表示讚賞感謝。
您列出的代碼似乎與您的問題無關。你的計時器代碼是什麼樣的? – CoderDennis 2015-02-10 21:19:52
我列出的代碼位於我的'Timer_Tick'事件中。我的計時器設置爲每秒執行一次,並運行上面列出的代碼。我只是顯示所有數據處理的代碼,因爲我只需要幫助設置定時器。我更新了我的代碼以正確顯示我的Timer事件。 – Riples 2015-02-10 21:24:11
好的。您的數據處理與定時器操作無關。根據當前小時查看你想要做的檢查有助於知道如何回答。 – CoderDennis 2015-02-10 21:37:46