我有一个在Windows 7上运行的VB6程序。它正在复制大量文件,有时FileCopy
会因访问冲突而失败(每60至500个文件之间)。
我不能使用单个文件来复制它,仅在这种批量复制操作期间会出现此问题。
如果源/目标位于硬盘,网络共享或CD-ROM上,则没有区别。
什么会触发此问题?
编辑:我的问题可能有点令人费解,所以这里有更多数据:
运行1:
开始复制5.000文件
文件#983上的访问冲突
文件1437上的访问冲突
文件1499上的访问冲突
文件#2132上的访问冲突
文件#3456上的访问冲突
文件#4320上的访问冲突
完成了
运行2:
开始复制5.000文件
文件#60上的访问冲突
文件#3745上的访问冲突
完成了
观察结果
受影响的文件总是不同的
如果连续多次复制同一文件批,则受影响的文件数趋于减少。
以管理员身份运行没有区别
该应用程序具有对所有必要文件系统对象的读/写访问权限
仅在Windows 7工作站上会发生此问题!
最佳答案
最佳猜测:进程运行时,其他用户/应用程序是否正在使用指定的文件? (防病毒扫描程序,Win7搜索索引工具,Windows Defender等),您可以尝试以安全的方式启动计算机,以消除任何后台服务/应用程序,然后尝试运行该进程以进行查看。
引起问题的文件类型或文件大小是否一致?
机器资源是否不足? RAM /磁盘空间
您说过它在Win7上发生–是多台Win7机器还是一台。 (有助于排除系统资源与软件/ OS的冲突)
来自事件查看器的任何提示(控制面板>管理工具)–令人怀疑
该过程是否需要很长时间才能完成?如果可以提高性能,可以考虑在每个副本或每个X文件之后销毁并重新创建FSO对象,以确保Win7 / VB6不会出现奇怪的内存泄漏问题。
不一定是推荐的解决方案,但是如果所有其他方法都失败了,则可以处理该错误,并将触发该错误的文件保存在字典/集合中,并在处理完成后使用所有这些文件重新循环。不保证不会再次发生。