在完成DoWork事件中的处理工作之后,是否有必要处置后台工作者,或者作为托管对象最终将自动处置它?

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

如果我放置此bgWorker.RunWorkerAsync()独立游戏timer_elapsed,如何在每个计时器过去后处置它?

最佳答案

...之后是否需要解雇背景工人


否。BackgroundWorker确实实现了IDisposable接口,但仅作为从Component继承的通用功能。它没有用。


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


令人怀疑的是,您是否应该这样做。但是,如果这样做,则每次都创建一个新的Backgroundworker。

Backgroundworker是一个相对“轻”的对象,它不包含任何资源。该线程是从ThreadPool借用的。

如果您是负责人,可以在创建新的之前对旧的调用Dispose()。但这不会有太大的不同。

09-16 11:13