繁体   English   中英

为什么FileCopy在Windows 7上随机失败?

[英]Why does FileCopy fail at random on Windows 7?

我有一个在Windows 7上运行的VB6程序。它正在复制大量文件,有时FileCopy因访问冲突而失败(每60到500个文件之间)。

我无法使用单个文件重现它,只有在大量复制操作期间才会出现此问题。

如果源/目标位于硬盘,网络共享或CD-ROM上,则没有区别。

什么可能引发这个问题?

编辑:我的问题可能有点复杂,所以这里有更多的数据:

运行1:

  1. 开始复制5.000个文件
  2. 文件#983上的访问冲突
  3. 文件#1437上的访问冲突
  4. 文件#1499上的访问冲突
  5. 文件#2132上的访问冲突
  6. 文件#3456上的访问冲突
  7. 文件#4320上的访问冲突
  8. 完成

运行2:

  1. 开始复制5.000个文件
  2. 文件#60上的访问冲突
  3. 文件#3745上的访问冲突
  4. 完成

意见

  • 受影响的文件总是不同的
  • 如果连续多次复制相同的文件批次,则受影响的文件数量会减少。
  • 以管理员身份运行没有区别
  • 应用程序具有对所有必需文件系统对象的读/写访问权限
  • 此问题仅在Windows 7工作站上发生!

最好的猜测:在进程运行时,是否有可能另一个用户/应用程序正在使用指定的文件? (反病毒扫描程序,Win7搜索索引工具,Windows防御程序等)您可以尝试以安全心情启动计算机以消除任何后台服务/应用程序并尝试运行该过程以查看。

导致问题的文件类型或文件大小是否一致?

机器资源不足吗? RAM /磁盘空间

你说它出现在Win7上 - 它是多台Win7机器还是只有一台。 (帮助排除系统资源与软件/操作系统)

来自事件查看器的任何提示(控制面板>管理工具) - 值得怀疑

这个过程需要很长时间才能完成吗? 如果您可以获得性能损失,您可能会在每个副本或每个X文件之后查看销毁和重新创建FSO对象,以确保Win7 / VB6没有出现奇怪的内存泄漏问题。

不一定是推荐的解决方案,但如果所有其他方法都失败了,您可以处理该错误并保存在字典/集合中触发它的文件,并在完成后使用任何这些文件重新遍历该过程。 不能保证它不会再发生。

信息不足(你可能知道)。 你记录活动了吗? 如果没有,这是一个很好的起点。 知道某些文件是否存在问题,以及问题是否可重复,可以帮助缩小范围。

在你的情况下,我也会陷阱(并记录)所有错误,并在等待N秒后重试N次。 您可能正在尝试复制由其他进程锁定的正在使用的文件,并且重试可能允许该锁定的时间消失。

实际上,更多数据是关键,而日志记录是获取数据的方式。

您的防病毒程序或某些索引器是否有可能妨碍您?

尝试创建一个procmon跟踪,同时重现错误并查看实际上失败的内容。 通过跟踪,您可以看到是否有另一个程序导致该问题,或者您的应用程序是否尝试在某处写入(不正确的权限)或不能(没有足够空间的临时/临时目录)。

查看链接到procmon页面或Mark Russinovich博客上的演示文稿 ,了解使用此工具解决各种Windows /应用程序谜题的一些很酷的例子。

目录中是否存在可能阻止它的隐藏/系统文件?

右键单击“以管理员身份运行”运行VB6应用程序会有所作为吗?

它是否在目录中的最大文件数下死亡? 例如,您确定VB6中使用的循环结构的上限是否正确(计数与计数-1)?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM