首先,對不起我的英文。PowerBuilder 11.5和C#COM組件的內存問題
我開發C#中的COM組件(實現IDisposable)使用它從PowerBuilder的是這樣的:
OLEObject lole_comComponent
lole_comComponent = Create OLEObject
lole_comComponent.ConnectToNewObject("MyComComponent")
[Do some stuff...]
lole_component.DisconnectObject()
destroy lole_component
GarbageCollect()
有了這個代碼,COM組件的析構函數被觸發時關閉德的應用程序。我已經爲調用私有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構建4740
你可以發佈你的C#類的''.Dispose()'方法的代碼嗎? –
@David就像這樣http://msdn.microsoft.com/es-es/library/system.idisposable(v=vs.80).aspx#Y480 – Merrin
你在做什麼像'lole_thing = lole_component.SomeThing' ?如果是這樣,你還需要斷開並銷燬'lole_thing'。 –