ActiveX通信

时间:2008-10-27 14:37:56

标签: vb6 activex

我正在开发一个ActiveX EXE,它将特定类暴露给第三方软件。该第三方软件实例化该类的对象并使用其方法。

奇怪的是,这个第三方软件只要调用一个特定的方法就会破坏我暴露类的对象,但我不知道为什么会这样。

我唯一的线索是这个方法是唯一一个返回值的方法。所有其他的都是简单的'subs',它们不会返回任何值,当它们被调用时,没有任何错误发生。

我正在使用VB6。

你们有没有想过为什么会这样?

2 个答案:

答案 0 :(得分:1)

删除对象的最后一次引用后,对象将被“销毁”。这是正常的COM行为。或者你的对象没有被删除,第三方应用程序出现了activex错误?

还有一些问题:

  • 我不知道你对“数据服务器”的意思?
  • 您是否可以访问第三方应用的源代码?
  • 您确定,第三方应用程序是否包含对您的对象的引用?
  • 你的对象是Class_Terminate方法吗?

修改 好的,当Class_Terminate被调用时,显而易见的是,第三方应用程序已放弃对您对象的引用。

答案 1 :(得分:0)

正如Jan在COM中所说,如果没有人引用它,你的对象就会终止是正常的。如果您想进行某种缓存(例如,保持数据库连接打开),您可以使用bas模块中定义的全局变量。

<强> basGlobal.bas

Global AGlobalVariable As Object

<强> Connector.cls

Public Function GetFoo() As Object
  If AGlobalVariable Is Nothing then
    Set AGlobalVariable = ...
  End If 
  Set GetFoo = AGlobalVariable
End Function