【发布时间】:2013-09-13 13:45:24
【问题描述】:
我有一个用户界面,可以将文件复制到带有进度条的 U 盘。
当在 API 级别完成 File.Copy 时,我会向用户显示一条成功消息。问题是,当我显示成功消息时,用户拔出驱动器,而 Windows 仍在“完成”。在完成之前拔出驱动器会调用文件不显示或损坏。
问题。
如何使 File.Copy 锁定,直到驱动器完全完成?这些记忆棒可能是 FAT32 或 NTFS(很可能是我们设备上的大文件)。
【问题讨论】:
-
我假设“最终化”是指写入缓存被刷新并且文件句柄关闭?如果是这样,您也许可以自己控制文件副本,以便获得对流的引用。然后你可以forcibly flush to disk (.Net 4+) 失败,你可以调用Win32API 来强制操作系统刷新缓存