【发布时间】:2011-03-24 00:39:03
【问题描述】:
我正在开发 C# .NET windows Forms 应用程序。其中我有一个主窗口和几个其他窗口窗体类(用作对话框)。我有一项计算密集型任务(需要 3-4 分钟)。当用户从菜单中选择此任务时,会弹出一个新对话框(窗口)并获取用户所需的参数,并且它有一个显示任务进度的进度条。我在此对话框中使用 BackgroundWorker 来执行计算和报告进度。此 BackgroundWorker 还将所有中间值写入名为 status.log 的日志文件。
问题是,当用户关闭此对话框时,需要关闭日志文件。我猜与这个对象关联的 BackgroundWorker 也会被破坏。因此,我甚至为此对话框的FormClosed 事件编写了处理程序并在其中关闭了文件。但似乎到那时 BackgroundWorker 并没有被杀死。我的意思是,BackgroundWorker 现在正在抛出一个文件已关闭且无法写入已关闭的流的异常。
如何处理这种情况?我应该什么时候关闭文件流? BackgroundWorker 线程什么时候被杀死?
【问题讨论】:
标签: c# .net winforms multithreading