ArcEngine正確釋放資源

2022-03-30 18:36:53 字數 1068 閱讀 5211

ae中對mdb,sde等資料庫操作時,開啟後卻往往不能及時釋放資源,導致別人操作提示物件被鎖定。

很多帖子說了很多原理,看的也煩且不實用,比如一句話概括的用system.runtime.interopservices.marshal.releasecomobject(object o)釋放,說的很不清楚,很多人試過覺的釋放不掉。

事實上,的確是用該方法,但釋放的技巧在於,新建幾個ae物件就要逐步釋放幾個,例如:

iworkspacefactory fact = new accessworkspacefactoryclass ();

ifeatureworkspace workspace = fact.open(propset,0) as ifeatureworkspace;

ifeatureclass fcls = workspace.openfeatureclass ("district");

ifeaturelayer fly = new featurelayerclass();

……ifeature pf

ifield pfield

……再物件執行結束時釋放,如:

system.runtime.interopservices.marshal.releasecomobject(fact);

system.runtime.interopservices.marshal.releasecomobject(workspace);

system.runtime.interopservices.marshal.releasecomobject(fcls);

system.runtime.interopservices.marshal.releasecomobject(fly);

system.runtime.interopservices.marshal.releasecomobject(pf);

system.runtime.interopservices.marshal.releasecomobject(pfield);

看到吧,千萬不要以為你釋放了等級最高的 iworkspacefactory, iworkspace就算完事了。沒辦法,ae有時就這麼難以理解的麻煩。

JDBC資源正確釋放

rs.close stat.close conn.close 此處釋放資源必須按照一定的順序釋放,越晚獲取的越先關閉。所以先關閉 rs物件,再關閉stat物件,最後關閉conn物件。另,為了避免上面的程式丟擲異常,釋放資源的 不會執行,應該把釋放資源的 放在finally塊中.trycatch ex...

AE正確釋放開啟資源

ae中對mdb,sde等資料庫操作時,開啟後卻往往不能及時釋放資源,導致別人操作提示物件被鎖定。很多帖子說了很多原理,看的也煩且不實用,比如一句話概括的用system.runtime.interopservices.marshal.releasecomobject object o 釋放,說的很不清...

Delphi釋放資源

經過這段時間對delphi中free 和 release 的仔細學習,先總結如下 1。form.free直接釋放資源後,呼叫ondestroy事件,但是沒有將form指標改為nil 2。form.release 等待資源不再使用後釋放資源,同樣不修改form指標為nil,所以在destroy中最好使...