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();     // 強制對零代到指定代進行垃圾回收。