我为我的重要目录开发了一个备份程序。
此程序写入是USB闪存驱动器上磁盘的数据。有时我会收到错误:
delayed write failed (id:50)
有没有办法在C#中解决它?使用标志直接写入DOK并不成功。它可能是由缓存引起的,但我不能通过DOK的策略禁用它。
复制方法:
FileInfo backupFile = file.CopyTo(theDokDir + fileToCopy.Name);
答案 0 :(得分:2)
也许this Microsoft Support article可以帮到你:
[...] 如果发生一般错误,则会记录事件ID 50消息 Windows正在尝试将信息写入磁盘。发生此错误 当Windows尝试从文件系统缓存中提交数据时 管理器(不是硬件级缓存)到物理磁盘。这种行为 是Windows内存管理的一部分。例如,如果一个程序 发送写请求,写请求由缓存管理器缓存 并且程序被告知写入已成功完成。在一个 稍后的时间点,缓存管理器尝试将数据延迟写入 物理磁盘。当缓存管理器尝试将数据提交到磁盘时, 写入数据时发生错误,数据从缓存中刷新 并丢弃。回写式缓存可提高系统性能,但是 数据丢失和卷完整性丢失可能由于丢失而发生 延迟写入失败。
[...]程序可以设置绕过的FILE_FLAG_NO_BUFFERING标志 缓存管理器。 [...]永远不会发生事件ID 50消息 非缓冲I / O的结果。 [...]
此外,this question或this post可能会有所帮助
PS:您是否尝试过使用其他USB闪存盘?