写延迟错误

本文关键字:错误 延迟 | 更新日期: 2023-09-27 18:06:52

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

程序写入是将数据写入USB闪存驱动器上的磁盘。有时我得到一个错误:

delayed write failed (id:50)
在c#中有什么方法可以解决这个问题吗?通过使用标志直接写入DOK是不成功的。这可能是由缓存引起的,但我不能通过DOK的策略禁用它。

复制方法:

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

写延迟错误

也许这篇微软技术支持文章能帮到你:

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

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

此外,这个问题或这篇文章可能会有所帮助

PS:你试过使用另一个USB闪存驱动器吗?