同时使用Flush(True)和FlushFileBuffers吗?

时间:2018-11-15 23:06:25

标签: c# .net filesystems filestream flush

我要写入文件并立即刷新到磁盘。

有关SO的其他问题指出,Flush(True)在.NET 4.0上不可靠。我确实在使用.NET 4.0,并且无法在任何时间进行升级。

FlushFileBuffers是否可靠?还是也知道有错误?

我是否可以使用一个选项,还是应该同时使用并希望达到最佳状态?

1 个答案:

答案 0 :(得分:0)

我猜您正在谈论的“错误”是this one

  

.NET Framework 4.0引入了新的 FileStream.Flush(bool flushToDisk)重载。   如果flushToDisk设置为true,则应将更改提交到磁盘。

     

但是,在许多情况下(如果内部缓冲区指针为0)更改不会提交到磁盘,并且Flush(true)调用绝对不执行任何操作。

     

如果应用程序依赖于FileStream.Flush(true)的工作,可能会导致数据损坏问题。

但是根据Is there an official fix (aka KB) for the FileStream.Flush bug introduced in .Net 4,该问题已通过4.0.3修复:

  

...据我所知,即使在KB中未提及,它也已在.NET Framework Update 4.0.3中修复。