0

编写应该清理任何旧文件的应用程序的一部分,但其中一些非常大,所以我启动了一些 BackgroundWorkers 来完成大部分工作。我的问题是,如果我在 BackgroundWorker 上的 FileInfo 对象上调用 file.Delete 并且应用程序退出:

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

2 回答 2

0

好的,为了解决这个问题,我已经切换到使用 Thread 对象。这会创建一个前台线程,并且在所有前台线程都完成之前,应用程序不应退出。

很抱歉给您带来麻烦。

于 2013-08-21T02:55:30.947 回答
0

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

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

当然,创建前台线程是另一种可行的解决方法,因为它们会阻塞主线程直到退出。但可能不是最优雅的解决方案。

于 2013-08-21T04:00:40.890 回答