gpt4 book ai didi

vb6 终止/跳过 CreateObject 调用

转载 作者:行者123 更新时间:2023-12-04 19:37:11 26 4
gpt4 key购买 nike

有人可以建议我如何终止或绕过偶尔需要几分钟才能完成的 CreateObject 操作吗?基本上我有这段代码:

Set m_Zeacom = CreateObject("QmCOM.QIntegrate")

大部分时间都可以立即工作,但对于某些用户来说可能需要几分钟(为什么 - 在这种情况下并不重要)。所以我想做的是为 CreateObject 执行设置一个时间限制,然后终止它或将我的应用程序与它分离。我玩过 DoEvents 试图在 CreateObject 挂起时继续其他代码,但没有任何运气。

最佳答案

另一种选择是在进程外运行的 ActiveX EXE 中调用 CreateObject。

  • 所以说我们称之为 ActiveX EXE OutOfBounds.Factory。
  • 您在类中实现了一个回调接口(interface),例如 IListener.Callback,它接受一个对象作为回调的一部分。
  • 您创建一个 OutOfBounds.Factory 类。
  • 越界工厂类有一个方法调用 GetQmCom,它接受一个 IListener 回调。
  • ActiveX EXE 中的 GetQmCom 方法会立即返回,但在后台(比如在计时器事件中)它会创建对象,一旦创建了对象,它就会调用传入创建对象的回调.
  • 缺点是其他进程拥有该对象,因此当您在进程中使用它时,您最终会遇到跨进程调用。如果你不经常调用它,你可能会侥幸逃脱。
  • 缺点,你所有的代码都需要处理没有对象的实际实例,因为它不确定它何时从 ActiveX EXE 到达(但如果你愿意跳过,你可能无论如何都需要这样做它或超时)。
  • 优点是,使用 ActiveX EXE(取决于您编写代码的方式),您可以根据需要缓存/共享实例。

我没有 VB6 了,否则我会为你敲一个例子。

您可能会发现有关 ActiveX EXE 的此 MS 链接很有用 http://msdn.microsoft.com/en-us/library/aa262306(v=vs.60).aspx

关于vb6 终止/跳过 CreateObject 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24329940/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com