我需要帮助为我的应用程序设置特定类型的计时器。我的情况是这样的:需要计时器在特定时间和每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