我使用一些對象,如工作簿,工作表,應用程序用於Excel任務。在完成Excel之後,我嘗試通過下面的代碼發佈它們。畢竟,我仍然可以在任務管理器中看到EXCEL.EXE。爲什麼它不完全釋放?如何發佈爲Excel創建的對象(C#)
我爲Excel任務等級:
Excel._Application app = new Excel.Application();
Excel._Workbook workbook = app.Workbooks.Add(Type.Missing);
Excel._Worksheet worksheet = null;
app.Visible = true;
worksheet.Cells[1, 1] = "test string";
workbook.SaveAs("C:\testfile.xlsx");
object misValue = System.Reflection.Missing.Value;
workbook.Close(true, misValue, misValue);
app.Quit();
releaseObject(worksheet2);
releaseObject(workbook);
releaseObject(app);
releaseObject類:
private void releaseObject(object obj)
{
try
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
obj = null;
}
catch (Exception ex)
{
obj = null;
MessageBox.Show("Unable to release the Object " + ex.ToString());
}
finally
{
GC.Collect();
}
}
EXCEL.EXE仍處於任務管理器:
你可以嘗試也設置'app','workbook'和'worksheet'爲' null'向GC表明不再需要對這些對象的引用。 – 2012-08-05 23:04:09
'Excel._Worksheet worksheet = null;'和一個名爲'worksheet'的對象的後續用法不匹配到'releaseObject(worksheet2);'但這可能只是一個錯字,而不是原始代碼 – barrowc 2012-08-05 23:26:43
@barrowc已經擊中了頭部。我懷疑這是一個錯字。我使用相同的'releaseObject(object obj)',從來沒有問題.... – 2012-08-06 00:15:29