vb6 kill / skip CreateObject调用

时间:2014-06-20 14:44:19

标签: vb6 createobject doevents

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

Set m_Zeacom = CreateObject("QmCOM.QIntegrate")

大部分时间都可以立即使用,但对于某些用户来说可能需要几分钟(为什么 - 在这种情况下并不重要)。所以我想要做的是设置CreateObject执行的时间限制,并将其删除或从中分离我的应用程序。我已经玩DoEvents试图在CreateObject挂起时继续使用其他代码,但没有运气。

1 个答案:

答案 0 :(得分:4)

另一个选择是在ActiveX EXE中调用CreateObject,该调用在您的进程之外运行。

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

我不再使用VB6,否则我会为你敲出一个例子。

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