Прежде всего, извините за мой английский.
Я разрабатываю компонент COM на C # (который реализует IDisposable), чтобы использовать его из PowerBuilder примерно так:
OLEObject lole_comComponent
lole_comComponent = Create OLEObject
lole_comComponent.ConnectToNewObject("MyComComponent")
[Do some stuff...]
lole_component.DisconnectObject()
destroy lole_component
GarbageCollect()
С помощью этого кода деструктор 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.
.Dispose()
вашего класса C #? - person 3Dave   schedule 28.06.2011lole_thing = lole_component.SomeThing
? В таком случае вам нужно отключить и уничтожитьlole_thing
. - person Hugh Brackett   schedule 29.06.2011