我正在开发一个ActiveX EXE
,它将特定类暴露给第三方软件。该第三方软件实例化该类的对象并使用其方法。
奇怪的是,这个第三方软件只要调用一个特定的方法就会破坏我暴露类的对象,但我不知道为什么会这样。
我唯一的线索是这个方法是唯一一个返回值的方法。所有其他的都是简单的'subs',它们不会返回任何值,当它们被调用时,没有任何错误发生。
我正在使用VB6。
你们有没有想过为什么会这样?
答案 0 :(得分:1)
删除对象的最后一次引用后,对象将被“销毁”。这是正常的COM行为。或者你的对象没有被删除,第三方应用程序出现了activex错误?
还有一些问题:
修改强> 好的,当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