[英]Why does FileCopy fail at random on Windows 7?
我有一个在Windows 7上运行的VB6程序。它正在复制大量文件,有时FileCopy
因访问冲突而失败(每60到500个文件之间)。
我无法使用单个文件重现它,只有在大量复制操作期间才会出现此问题。
如果源/目标位于硬盘,网络共享或CD-ROM上,则没有区别。
什么可能引发这个问题?
编辑:我的问题可能有点复杂,所以这里有更多的数据:
运行1:
运行2:
意见
最好的猜测:在进程运行时,是否有可能另一个用户/应用程序正在使用指定的文件? (反病毒扫描程序,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.