我們在我們的代碼中的許多地方使用Excel互操作,但是我有一個函數似乎並沒有關閉它使用的Excel過程..我簡化了代碼下來,它似乎只要我在這個功能打開一個工作簿,它保持四處閒逛。我已經包含了下面的代碼,我確保每個對象都被定義,發佈和清零,但Excel仍在運行。C#.net Excel Interop離開Excel過程掛
System.Data.DataTable dtExcelSheet = new System.Data.DataTable();
Microsoft.Office.Interop.Excel.Application excelObject = new Microsoft.Office.Interop.Excel.Application();
dtExcelSheet.Columns.Add("SheetName", typeof(string));
dtExcelSheet.Columns["SheetName"].ReadOnly = false;
dtExcelSheet.Columns["SheetName"].Caption = "Sheet Name";
Workbooks wbs = excelObject.Workbooks;
Workbook excelWorkbook = wbs.Add(excelFile);
excelWorkbook.Close(false, System.Reflection.Missing.Value, System.Reflection.Missing.Value);
wbs.Close();
excelObject.Quit();
int i1 = Marshal.FinalReleaseComObject(excelWorkbook);
int i2 = Marshal.FinalReleaseComObject(wbs);
int i3 = Marshal.FinalReleaseComObject(excelObject);
excelWorkbook = null;
wbs = null;
excelObject = null;
GC.GetTotalMemory(false);
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
GC.GetTotalMemory(true);
匿名專欄也是我的猜測。 – Mathias 2010-06-23 05:21:10
這是一個數據表中的列,沒有連接到Excel表格.... – 2010-06-25 13:27:07
@瑞克:你說的對,我誤解了。我的答案剩下的唯一一件事就是在最後不要將它們設置爲null,儘管這聽起來毫無意義,但值得嘗試。 – 2010-06-25 14:23:49