如何以正确的方式处理BackgroundWorkers

rad*_*byx 6 c# timer backgroundworker

我有一个运行的Windows服务,BackgroundWorker我想知道当我停止我的Windows服务时我是否正在做正确的事情.

是否足够:

  1. BackgroundWorker1_DoWork方法完成(我现在有一个while循环,做一些任务)
  2. 设置保存的参考变量BackgroundWorker,以null

是否有某种Dispose()方法,我需要调用(同样的Timer类有Timer.Dispose();)?

Mar*_*ett 1

坦率地说,当您停止 Windows 服务时,这确实无关紧要。您的 win32 进程已终止,因此并不严格需要清理 IDisposables。任何非托管资源都将具有仍将运行的终结器。

也就是说,当服务类处理时,有一个类级别的后台工作人员被处理是很正常的。没有必要,但保持干净总是好的。