我在Windows 7上运行了一个VB6程序。它正在复制大量文件,有时FileCopy
因访问冲突而失败(每60到500个文件之间)。
我无法使用单个文件重现它,只有在此类大量复制操作期间才会出现此问题。
如果源/目标位于硬盘,网络共享或CD-ROM上,则没有区别。
什么可能触发这个问题?
编辑:我的问题可能有点复杂,所以这里有更多数据:
运行1:
运行2:
观察
答案 0 :(得分:4)
最佳猜测:在进程运行时,是否有可能另一个用户/应用程序正在使用指定的文件? (反病毒扫描程序,Win7搜索索引工具,Windows防御程序等)您可以尝试以安全心情启动计算机以消除任何后台服务/应用程序并尝试运行该过程以查看。
导致问题的文件类型或文件大小是否一致?
机器资源不足吗? RAM /磁盘空间
你说它出现在Win7上 - 是多台Win7机器还是只有一台。 (帮助排除系统资源与软件/操作系统)
来自事件查看器的任何提示(控制面板>管理工具) - 可疑
这个过程需要很长时间才能完成吗?如果您可以获得性能提升,您可能会在每个副本或每个X文件之后查看销毁和重新创建FSO对象,以确保Win7 / VB6没有奇怪的内存泄漏问题。
不一定是推荐的解决方案,但如果所有其他方法都失败了,您可以处理该错误并将触发它的文件保存在字典/集合中,并在完成后使用任何这些文件重新遍历该过程。不能保证它不会再发生。
答案 1 :(得分:3)
信息不足(您可能知道)。你记录活动了吗?如果没有,这是一个很好的起点。知道某些文件是否存在问题,以及问题是否可重复,可以帮助缩小范围。
在你的情况下,我也会陷阱(并记录)所有错误,并在等待N秒后重试N次。您可能正在尝试复制由其他进程锁定的正在使用的文件,并且重试可能会留出时间让该锁定消失。
实际上,更多数据是关键,而记录是获取数据的方法。
答案 2 :(得分:2)
您的防病毒程序或某些索引器是否有可能妨碍您的使用?
尝试在重现错误时创建procmon跟踪并查看实际失败的内容。通过跟踪,您可以看到是否有其他程序导致问题,或者您的应用程序是否尝试在某处写入(不正确的权限)或不能(没有足够空间的临时/临时目录)。
查看procmon页面上的presentations linked或Mark Russinovich's blog,了解使用此工具解决各种Windows /应用程序谜题的一些很酷的例子。
答案 3 :(得分:1)
目录中是否存在可能阻止它的隐藏/系统文件?
右键单击“以管理员身份运行”运行VB6应用程序会有所作为吗?
它是否在目录中的最大文件数处死亡?例如你确定你在VB6中使用的循环结构的上限是正确的(Count vs count -1)?