ここでは、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);
}
私のコードはそれらの変数を正しく処分してはいけませんか?私はHow do I properly clean up Excel interop objects?(第2の回答)での手順をオーバー従うことをしようとしています
[Code removed]
私は試しに完全なループをputtngしてからやり直してみましたが、変数を見つけることはできませんでした。おそらく、ループで宣言されているからでしょうか? – TheGateKeeper
はい、try/finallyはループ内になければなりません。見た目が変わるたびに、新しいセルとそのフォントを参照し、それらのすべてを解放する必要があります。 – Joe
私は以下のように簡単な方法でそれをやった – TheGateKeeper