编写应该清理任何旧文件的应用程序的一部分,但其中一些非常大,所以我启动一些BackgroundWorkers来完成大部分工作。 我的问题是,如果我正在调用一个文件。删除调用BackgroundWorker上的FileInfo对象并退出应用程序:
答案 0 :(得分:0)
好的,为了解决这个问题,我已经切换到使用Thread对象了。 这会创建一个前台线程,应用程序不应该退出,直到所有前台线程都已完成。
对此感到抱歉。
答案 1 :(得分:0)
如果您只希望应用程序线程等到文件被删除,则可以将BackgroundWorker与AutoResetEvent结合使用。这在How to wait for a BackgroundWorker to cancel?解释 (请注意,此答案包含有关取消的其他信息)
这样,您仍然可以使用BackgroundWorker公开事件,例如ProgressChanged和RunWorkerCompleted。
当然,创建前景线程是另一种可行的解决方案,因为它们阻止主线程直到它们退出。但可能不是最优雅的解决方案。