在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忙,则等待它完成。
当然可以使用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..
}