一个COM组件,使用之后应该怎样释放..(我也不知道 :(

以下是一段VB的code

dim obj

set obj = CreateObject("TestDll.TestClass")  ' //建立了一个TestClass对象 這個對象存在于 Testdll.dll 或者test.exe 糢塊中 當然也有可能是 一個ocx什么的

obj.ReturnString() ' //接下來用這個obj來完成一些操作

' //現在開始來釋放這個obj

set obj = nothing ' //釋放它 byebye

到此為止 ,不要以為 這段VBcode與TestDll糢塊沒有關繫暸 ,實際上現在嘗試刪除這個糢塊會被提示"文件正在被使用" .

實際上 set obj=nothing 隻是讓糢塊與我們的程序與dll斷開鏈接,但是他並沒有從我們的程序內存空間中去掉映射關繫,也就是說 組件的 ExitInstance不會被調用.(這是 Visual C++.net 技術內幕的原話)

要去掉這個映射關繫需要調用 CoFreeUnusedLibraries() ,不過一個MFC程序會在空閑的時間調用CoFreeUnusedLibraries,但是ASP和 Excel就不會(估計vb的話..也不會)

不要忘暸在vb程序調用

Private Declare Sub CoFreeUnusedLibraries Lib "OLE32" ()

dim obj

set obj = CreateObject("TestDll.TestClass")

' // do  some operate

Set Obj= Nothing

call  CoFreeUnusedLibraries()

問題是:在一個ASP程序裏麵如何調用這個 CoFreeUnusedLibraries(),不調用這個的話,我們的DLL永遠不能釋放(不過我們也可以選擇重新啓動www服務)

期待更好的解決方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值