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

标签 .net exception filestream flush

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

是否有处理失败的 Close() 调用的标准方法?似乎如果 Close() 遇到错误,您要么 1) 泄漏文件句柄,要么 2) 导致应用程序终止,这两者都 Not Acceptable 。

最佳答案

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

关于.net - 由于无法关闭的 FileStream 导致应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25515587/

相关文章:

java - 抛出所有捕获的异常的目的是什么?

.net - 异步文件IO线程安全吗?

c++ - 首选 c++ i/o 流方法 : fstream or ifstream/ofstream or something else entirely?

.net - 绑定(bind)到接口(interface)类型属性

c# - 通过 C# 确定本地组的成员

java - "NoClassDefFoundError: Could not initialize class"错误

c# - 传递流的子序列而不将其内容复制到新实例中

c# - 为什么这个随机数生成器不是随机的?

.net - 为什么[NonSerialized]在自动实现的属性上不起作用?

java - 未抛出异常时捕获异常