在BackGroundWorker中使用Timer

本文关键字:Timer BackGroundWorker | 更新日期: 2023-09-27 18:02:31

应用程序处理实时数据。当打开Form时,创建BackgroundWorker并获取数据并进行处理。

现在我希望整个循环在5秒循环中运行,只要Form是活动的或打开的。例如,如果用户打开form1并且在5秒的时间内仍然在上面,那么BackgroundWorker将再次执行所有的获取和处理。现在,如果用户关闭form1并打开form2,则创建一个新的BackgroundWorker,并执行与form2相关的处理。

我完成了BackgroundWorker部分,但不能决定如何循环BackgroundWorker。我应该在BackgroundWorker中创建一个定时器,每5秒触发一次吗?或者我扔掉BackgroundWorker,只做定时器?

编辑:我在定时器里面用了BGW。因此,计时器每5秒调用BGW,如果BGW忙,则等待它完成。

在BackGroundWorker中使用Timer

当然可以使用timer对象来实现,如下所示

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..
}