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

标签 vb6 file 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 Defender 等)您可以尝试以安全的方式启动机器以消除任何后台服务/应用程序并尝试运行该进程以查看。

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

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

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

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

该过程是否需要很长时间才能完成?如果您能承受性能损失,您可能会考虑在每次复制或每个 X 文件后销毁和重新创建 FSO 对象,以确保 Win7/VB6 不会出现一些奇怪的内存泄漏问题。

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

关于vb6 - 为什么 FileCopy 在 Windows 7 上随机失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2236404/

相关文章:

c++ - 我应该为 DirectX 11 使用什么 SDK?

ubuntu - Xming 在 Windows 7 上无法连接

git - 致命的 : unable to access 'H:\/.config/git/config' : Invalid argument [Git on Windows 7]

vb6 - 更改 'References' 对话框宽度?

c++ - 从 C++ header 中导入常量而不是对它们进行硬编码 : extending . 网络控件?

file - Blackberry 上的最大文件名长度

c - 尝试将数组中的数据保存到文件中

c++ - 从低到高组织整数并在 C++ 中使用结构

vb.net - 如何访问这个变量?

用于商店销售的 Django 条形码