C#中關於excel匯出後進程關不了的問題以及解決
阿新 • • 發佈:2019-02-03
C#呼叫Excel讀取Excel檔案,經常會遇到無法釋放資源,程式結束了,工作管理員中仍然有很多的程序無法及時退出和釋放。
後來,經過查詢資料,找到了一個釋放Com物件資源的方法:
System.Runtime.InteropServices.Marshal.ReleaseComObject(Object O)
最近的程式碼中有這樣的引用:
System.Runtime.InteropServices.Marshal.ReleaseComObject(excApp); System.Runtime.InteropServices.Marshal.ReleaseComObject(excWork); System.Runtime.InteropServices.Marshal.ReleaseComObject(excsheet);
這樣的程式碼是無法徹底的釋放Excel物件的,因為必須先將工作表物件釋放,然後釋放工作簿,最後釋放整個表格物件,將上面的語句做如下修改:
System.Runtime.InteropServices.Marshal.ReleaseComObject(excsheet); System.Runtime.InteropServices.Marshal.ReleaseComObject(excWork); System.Runtime.InteropServices.Marshal.ReleaseComObject(excApp);
GC.collect(); // 強制對零代到指定代進行垃圾回收。