在閱讀了關於在引用excel com對象時不使用雙點的許多線程之後,我決定實現它。終止excel過程
它一直工作,直到我來循環做。
這是我的循環。請注意,它的作品,如果我對此發表評論:
for (int i = 1; i < dgv.Columns.Count + 1; i++)
{
excelWorkbook.Cells[1, i] = dgv.Columns[i - 1].HeaderText;
var cell = excelWorkbook.Cells[1, i];
var fontSetter = cell.Font;
fontSetter.Bold = true; //Bolds the header row
// Garbage collecting
GC.Collect();
GC.WaitForPendingFinalizers();
Marshal.FinalReleaseComObject(fontSetter);
Marshal.FinalReleaseComObject(cell);
}
不應該我的代碼正確地處理它們的變量嗎?
這裏是我的全碼:
[Code removed]
我試圖按照步驟在上How do I properly clean up Excel interop objects?(第二個答案)
我試圖通過puttng完整的循環嘗試,然後使用finally,但它無法找到變量。也許是因爲它們是在循環中聲明的? – TheGateKeeper 2012-03-31 12:17:54
是的,try/finally將不得不在循環中。每次通過外觀,你都會引用一個新的單元格和它的字體,並且你必須釋放所有的單元格。 – Joe 2012-03-31 15:45:34
我做了一個更簡單的方法,如下所示 – TheGateKeeper 2012-03-31 16:33:11