我正在开发一个ActiveX EXE
向第三方软件公开特定类的工具。这个第三方软件实例化了这个类的一个对象并使用它的方法。
奇怪的是,这个第三方软件一调用特定方法就破坏了我暴露的类的对象,但我不知道为什么会发生这种情况。
我唯一的线索是这个方法是唯一一个返回值的方法。所有其他的都是简单的“subs”,不返回任何值,当它们被调用时,不会发生任何错误。
我正在使用VB6。
你们知道为什么会这样吗?
当最后一个对它的引用被删除时,您的对象将被“销毁”。那是正常的 COM 行为。或者您的对象是否毫无例外地死去,而第三方应用程序出现了 activex 错误?
还有一些问题:
编辑: 好的,当 Class_Terminate 被调用时,很明显,第三方应用程序已经放弃了对您的对象的引用。
正如 Jan 在 COM 中所说,如果没有人引用它,则终止您的对象是正常的。如果您想做某种缓存(例如保持 DB 连接打开),您可以使用在 bas-module 中定义的全局变量。
basGlobal.bas
Global AGlobalVariable As Object
连接器.cls
Public Function GetFoo() As Object
If AGlobalVariable Is Nothing then
Set AGlobalVariable = ...
End If
Set GetFoo = AGlobalVariable
End Function