Timer,BackGroundWorker和ReportProgress

时间:2015-10-22 11:10:53

标签: vb.net

我有一个用于在晚上发送统计信息的用户界面。

用户界面可以将统计数据手动发送到分发组和个人,然后我也会安排发送'你设置一个计时器和一个计时器滴答,直到当前时间与计时器中设置的匹配。

当时间匹配时,这会调用:

Public Shared Sub ProcessDailyStats(ByVal Arguments As List(Of String))

    DailyStats_BGW.WorkerReportsProgress = True
    DailyStats_BGW.WorkerSupportsCancellation = True

    AddHandler DailyStats_BGW.DoWork, AddressOf DailyStats_BGW_DoWork
    AddHandler DailyStats_BGW.ProgressChanged, AddressOf DailyStats_BGW_ProgressChanged
    AddHandler DailyStats_BGW.RunWorkerCompleted, AddressOf DailyStats_BGW_RunWorkerCompleted

    DailyStats_BGW.RunWorkerAsync(Arguments)

End Sub 

现在通过'按钮'在个人或分发组的MainForm上发送ReportProgress事件工作正常。

我使用ReportProgress事件更新一个小日志,当从定时器触发时,相同的子和后续的ReportProgress事件不会更新RTB。

请注意RTB属于一个类(MainForm),Timer和BackGroundWorker属于另一个类(DailyStats)。为什么在MainForm上按下按钮时这是有效的,但在DailyStats类中使用Timer失败。

仅供参考,Job正确完成,我收到了最终的电子邮件,这只是RichTextBox在处理过程中无法更新的问题。

如果您需要更多代码,请询问。

干杯

0 个答案:

没有答案