在完成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()。但这不会有太大的不同。