这是我的应用程序状态:

目的 - 从Internet方法下载多个列表文件 - 创建了一个简单的“下载表单”。一段时间后,我只需要更多表格,因为我有多个文件列表需要下载。刚刚解决了这个问题,方法是向我的项目添加一个 MDIform,添加一个按钮来创建另一个“下载表单”实例,然后瞧。显然,我的问题已经解决了。但不是 :(

当我按下 form-instance3 中的“下载”按钮时,其他表单实例(2 和 1)会挂起下载内容(有时会超时),直到 form-instance3 终止所有下载,依此类推。其他形式。因此,即使我知道我的应用程序不是多线程的,但同一表单的多个实例存在冲突(大概是 Inet 组件),并且我无法同时下载多个文件。Inet 和我的下载功能在表单中定义。

我能做什么来解决这个问题?如何同时下载多个文件?

非常感谢

编辑:

我正在尝试使用“wqw”建议,但我遇到了一些问题:在 download_form 中,我有一个 MSHFlexgrid,有 2 列:一个带有 URL,另一个带有文件命运。我正在迭代抛出所有行来下载文件并保存它们。使用“wqw”建议的方法,如何区分每个下载,以便可以使用网格中指示的正确名称保存它?

有帮助吗?

解决方案

你用什么实际的http下载?我会尝试简单的异步下载和忘记mdi窗体。真!

其他提示

VB6 本身是单线程的。因此,打破下载到不同的形式不会对你有帮助。

我过去用过的是 定时器对象执行程序. 。这种方法将使您能够将所有下载逻辑本地化在一个地方,像控制常规对象一样控制它并让它在单独的 EXE 中运行,从而默认情况下使其成为多线程。

所以它的工作方式是这样的:

  1. 您调用 ActiveX EXE 对象上的 Download 方法
  2. 在下载方法中,您实例化计时器并使其几乎立即启动。
  3. 您退出 Download 方法,从而将控制权交还给调用它的实体。
  4. 然后您通过事件(例如下载进度或下载完成等...)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top