首先,对不起我的英语。
我正在使用C#(实现IDisposable)开发一个COM组件,以便在PowerBuilder中使用它:
OLEObject lole_comComponent
lole_comComponent = Create OLEObject
lole_comComponent.ConnectToNewObject("MyComComponent")
[Do some stuff...]
lole_component.DisconnectObject()
destroy lole_component
GarbageCollect()
使用此代码,关闭de app时会触发COM Component的析构函数。我已经为调用私有Dispose方法的组件添加了一个方法。像这样:
OLEObject lole_comComponent
lole_comComponent = Create OLEObject
lole_comComponent.ConnectToNewObject("MyComComponent")
[Do some stuff...]
lole_component.Close() // this method calls Dispose(true)
lole_component.DisconnectObject()
destroy lole_component
GarbageCollect()
在这两个示例中,都没有释放组件使用的内存。
如何释放COM组件使用的内存?
我正在使用PowerBuilder 11.5.1 Build 4740。
答案 0 :(得分:1)
我承认在这种情况下,谁拥有内存,PowerBuilder或控件时模糊不清,但是一个可能有用(或没有)的事实是PowerBuilder倾向于挂起内存它被分配来自操作系统。理论上说内存请求是性能昂贵的操作,因此它不是经历请求和释放内存的循环(PB不知道你接下来要做什么),它只是挂在它请求的内存上而不是现在需要。
HTH,
特里。