在BackGroundWorker中使用Timer

时间:2011-07-15 08:07:52

标签: c# .net winforms timer backgroundworker

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

现在我希望整个周期在 5秒循环中运行,只要Form处于活动状态或打开状态即可。即如果用户打开form1并且在5秒内仍然在其上,则BackgroundWorker将再次进行所有提取和处理。现在,如果用户关闭form1并打开form2,则会创建一个新的BackgroundWorker,并执行与form2相关的处理。

我已完成BackgroundWorker部分,但无法决定如何循环BackgroundWorker。我应该在每5秒触发的BackgroundWorker内创建一个Timer吗?或者我查看BackgroundWorker并仅使用计时器?

编辑:我和Timer内的BGW一起去了。因此,定时器每隔5秒调用BGW,如果BGW忙,则等待它完成。

1 个答案:

答案 0 :(得分:1)

是的,你当然可以使用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..
}