由于无法关闭的FileStream导致应用程序崩溃

时间:2014-08-26 21:40:30

标签: .net exception filestream flush

在调用FileStream对象上的Close()方法之前,我拔下底层的USB驱动器。 Close()方法在尝试刷新未写入的数据时会抛出异常。如果我压制异常(捕获,但不要重新抛出),则终结器将在以后的任意时间内调用。它将尝试刷新未写入的数据但遇到相同的错误,导致应用程序终止。

是否有一种标准方法来处理失败的Close()调用?似乎如果Close()遇到错误,1)泄漏文件句柄或2)导致应用程序终止,这两者都不可接受。

2 个答案:

答案 0 :(得分:1)

如果不是调用Close(),而是调用Dispose(),或者将代码包装在using中,您应该可以避免GC的异常,因为终结器不会尝试再次处理流。

答案 1 :(得分:0)

您可以使用GC.SuppressFinalize来禁止终结器执行,因此稍后当对象被垃圾回收时,您将不会收到错误。