關於呼叫GC釋放Office程序的方法

2021-05-23 23:35:41 字數 1337 閱讀 3095

1、 釋放office excel 程序 方法

一、在同一方法內部呼叫gc

將用到的office

所有物件(到最小物件單元,除了應用程式物件) 引用設為null ,,呼叫應程式物件引用的quit() 方法,再將應用程式物件引用置為null ,最後呼叫gc.collect()

。如果最後不將應用程式的物件引用置為null ,那麼程序中會至少有乙個該office 物件程序。

using

m***cel= microsoft.office.interop.excel;

public void releaseprocess()

if (workbook.worksheets.count > 0)

worksheets = null;

workbook = null;

workbooks = null;

不呼叫也可以

gc.collect(); }

方法二、在呼叫方法中釋放被呼叫方法內的office 程序,在被呼叫方法內部至少要呼叫應用程式物件引用的quit() 方法。

public void createprecess()

if (workbook.worksheets.count > 0)

不呼叫也可以

此時不賦null 也可以

//gc.collect();

如果在這裡呼叫,程序不會釋放資源 }

} public void releaseprocess()

方法三、對每個物件引用呼叫

marshal

.releasecomobject

方法。在同乙個方法內部呼叫gc.collect 時,也必須對office 的所有物件引用呼叫marshal

.releasecomobject ,否則程序中至少會有乙個office 程序。但是如果在外部呼叫gc.collect 時,可不必對所有物件引用呼叫marshal

.releasecomobject ,但必須對應用程式的物件引用呼叫quit() 方法。

public void releaseobjects()

if (workbook.worksheets.count > 0)

if (worksheets != null )

marshal .releasecomobject(worksheets);

if (workbook != null )

if (workbooks != null )

marshal .releasecomobject(workbooks);

gc .collect(); }

總體效能 GC呼叫

gc呼叫頻率 幀 次 專案執行時平均多少幀會觸發一次 gc操作。該值越低,表示 gc觸發得越快,即專案執行時卡頓次數越多。推薦值 1000幀 次 一般在切場景時呼叫或手動去呼叫 如果堆記憶體分配合理,就不用手動呼叫,由mono自動進行觸發 優化方法 1 優化堆記憶體 2 切場景時,手動呼叫gc.co...

關於Office正版驗證

微軟最新發布了office 正版增值計畫通知 kb949810 chs,這給經常為offlce更新或開啟microsoft update 自動更新的朋友帶了麻煩。開啟world或excel時突然發現了個 office 正版增值計畫通知 視窗 您正在使用的office軟體是非正版授權軟體 去微軟官方驗...

關於HDC CDC的釋放

首先 hdc hdc getdc hwnd cdc pdc cdc fromhandle hdc 對於以上 通過fromhandle得到的 cdc 不可以釋放.fromhandle 是通過 hdc 來建立了乙個 cdc 物件,以方便操作,釋放 dc 的操作應該針對於 hdc 而非此 cdc 如果釋放...