我们在我们的代码中的许多地方使用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