我定期将数据保存到文件中(文件每次都打开和关闭)我希望使用Stopwatch
来测量文件操作所花费的时间。
我是否应该将Close()
?
我们遇到软件问题,我怀疑文件操作,例如繁忙的硬盘驱动器或某种可能导致延迟的故障。在这种情况下调用Close()
会导致延迟(阻塞)还是Close()
非阻塞方法(但是在框架/ winapi文件深处的某个地方正在从写入缓冲区等中刷新)?
或者Write()
可能会在发生故障时变慢?我不知道如何模拟磁盘问题以快速测试会发生什么。
答案 0 :(得分:-1)
首先,the documentation for FileStream
建议调用Dispose
而不是Close
。检查参考源,所有Close
都是:
Dispose(true);
GC.SuppressFinalize(this);
在这种情况下调用Close()会导致延迟(阻塞)或者是 Close()一个非阻塞方法(但在某个内部深处 框架/ winapi文件正在从写入缓冲区等中刷新 它)?
Close
调用Dispose
,它执行两项操作:
当然,"刷新任何待处理的磁盘写入"意味着,告诉操作系统"刷新任何挂起的磁盘写入。"操作系统根据各种因素处理不同(例如,USB驱动器往往写得不那么懒,临时文件可能永远不会刷新到磁盘上。)