延迟写入错误

时间:2011-08-29 16:27:08

标签: c#

我为我的重要目录开发了一个备份程序。

此程序写入是USB闪存驱动器上磁盘的数据。有时我会收到错误:

delayed write failed (id:50)

有没有办法在C#中解决它?使用标志直接写入DOK并不成功。它可能是由缓存引起的,但我不能通过DOK的策略禁用它。

复制方法:

FileInfo backupFile = file.CopyTo(theDokDir + fileToCopy.Name);

1 个答案:

答案 0 :(得分:2)

也许this Microsoft Support article可以帮到你:

  

[...]   如果发生一般错误,则会记录事件ID 50消息   Windows正在尝试将信息写入磁盘。发生此错误   当Windows尝试从文件系统缓存中提交数据时   管理器(不是硬件级缓存)到物理磁盘。这种行为   是Windows内存管理的一部分。例如,如果一个程序   发送写请求,写请求由缓存管理器缓存   并且程序被告知写入已成功完成。在一个   稍后的时间点,缓存管理器尝试将数据延迟写入   物理磁盘。当缓存管理器尝试将数据提交到磁盘时,   写入数据时发生错误,数据从缓存中刷新   并丢弃。回写式缓存可提高系统性能,但是   数据丢失和卷完整性丢失可能由于丢失而发生   延迟写入失败。

     

[...]程序可以设置绕过的FILE_FLAG_NO_BUFFERING标志   缓存管理器。 [...]永远不会发生事件ID 50消息   非缓冲I / O的结果。 [...]

此外,this questionthis post可能会有所帮助

PS:您是否尝试过使用其他USB闪存盘?