BackgroundWorker和删除大文件

本文关键字:文件 删除 BackgroundWorker | 更新日期: 2023-09-27 18:28:28

编写应用程序的一部分,该部分本应清理任何旧文件,但其中一些文件相当大,因此我启动了一些BackgroundWorkers来完成大部分工作。我的问题是,如果我正在调用一个文件。删除对BackgroundWorker上FileInfo对象的调用,应用程序退出:

  • 该文件会发生什么,它会以无效状态挂起吗
  • 应用程序将挂起,还是BGWorker将保持活动状态
  • 文件是否无效
  • 在这种情况下,BackgroundWorker是正确的类吗

BackgroundWorker和删除大文件

好的,为了解决这个问题,我改为使用Thread对象。这将创建一个前台线程,在所有前台线程完成之前,应用程序不应该退出。

抱歉打扰了。

如果您只想让应用程序线程等待文件被删除,您可以将BackgroundWorker与AutoResetEvent结合使用。这在如何等待BackgroundWorker取消?(请注意,此答案也包含有关取消的附加信息)

这样,您仍然具有BackgroundWorker公开事件的优势,例如ProgressChanged和RunWorkerCompleted。

当然,创建前地线程是另一项有效的工作,因为它们会阻塞主线程直到退出。但这可能不是最优雅的解决方案。