VB6-Inet挂起-多个表单实例

问题描述 投票:1回答:2

这是我的应用状态:

目的-从互联网下载多个列表文件方法-创建一个简单的“下载表单”。一段时间后,我只需要更多表格,因为我要下载的文件不只一个。通过将MDIform添加到我的项目中,只需解决一个问题,即可添加一个按钮来创建另一个“下载表单”实例并添加新内容。显然,我的问题解决了。但是没有:(

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

我该怎么解决?如何同时下载多个文件?


编辑:

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

vb6 multiple-instances inet
2个回答
3
投票

实际的http下载使用什么?我会尝试Simple Asynchronous Downloads并忘记MDIForm。真的!


2
投票

VB6本身是单线程的。因此,大量下载到其他表格将无济于事。

我过去使用的是Timer objectActiveX EXE结合使用。这种方法将使您能够将所有下载逻辑集中在一个地方,像控制常规对象一样对其进行控制,并使其在单独的EXE中运行,因此默认情况下使其成为多线程。

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

  1. 您在ActiveX EXE对象上调用Download方法
  2. 在下载方法中,您实例化了Timer并几乎立即将其启动。
  3. 您退出了Download方法,因此将控制权交还给调用它的实体。
  4. 然后您通过事件(例如,DownloadProgress或DownloadComplete等)与主应用通信,]
© www.soinside.com 2019 - 2024. All rights reserved.