就在对 FileStream 对象调用 Close() 方法之前,我拔下底层 USB 驱动器。 Close() 方法在尝试刷新未写入的数据时会抛出异常。如果我压制异常(捕获,但不重新抛出),则在任意时间后调用终结器。它将尝试刷新未写入的数据,但遇到相同的错误,导致应用程序终止。
是否有处理失败的 Close() 调用的标准方法?似乎如果 Close() 遇到错误,您要么 1) 泄漏文件句柄,要么 2) 导致应用程序终止,这两者都 Not Acceptable 。
最佳答案
if 而不是调用 Close()
,您调用Dispose()
, 或将您的代码包装在 using
中,您应该能够避免 GC 异常,因为终结器将不再尝试处理流。
关于.net - 由于无法关闭的 FileStream 导致应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25515587/