处置后台工作者

时间:2012-06-02 14:56:36

标签: c# asynchronous backgroundworker

在DoWork事件中完成处理工作后,是否有必要处理后台工作程序,或者作为托管对象,这最终会自动处理?

以前,我在timer_elapsed内执行一些功能,即每30秒执行一次任务。 现在,我在BackGround Worker的DoWork事件中进行相同的处理。如何在每30秒(例如)bgworker.RunWorkerAsync();

之后循环执行此bgWorker事件

如果我把这个bgWorker.RunWorkerAsync()独立timer_elapsed,我怎么在每个计时器过去之后处理它?<​​/ p>

1 个答案:

答案 0 :(得分:3)

  

是否有必要在......之后解雇背景工作者。

没有。 BackgroundWorker确实实现了IDisposable接口,但仅作为从Component继承的一揽子功能。它没有任何意义。

  

如果我将此bgWorker.RunWorkerAsync()放入timer_elapsed

如果你应该这样做,那就太可疑了。但是如果你这样做,那么每次都要创建一个新的Backgroundworker。

背景工作者是一个相对“轻”的对象,它没有资源。该线程是从ThreadPool借来的。

如果你是校长的坚持者,你可以在创建一个旧的之前调用旧的一个Dispose()。但它不会产生太大的影响。