BackgroundWorker和删除大文件

时间:2013-08-21 02:12:53

标签: c# asynchronous backgroundworker

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

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

2 个答案:

答案 0 :(得分:0)

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

对此感到抱歉。

答案 1 :(得分:0)

如果您只希望应用程序线程等到文件被删除,则可以将BackgroundWorker与AutoResetEvent结合使用。这在How to wait for a BackgroundWorker to cancel?解释 (请注意,此答案包含有关取消的其他信息)

这样,您仍然可以使用BackgroundWorker公开事件,例如ProgressChanged和RunWorkerCompleted。

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