Nachdem ich viele Threads hier über keine Doppelpunkte beim Referenzieren von Excel-Objekten gelesen habe, entschied ich mich, es zu implementieren.Beenden Excel-Prozess
Es funktionierte, bis ich in meiner Schleife zu tun begann.
Hier ist meine Schleife. Beachten Sie, dass es funktioniert, wenn ich dies auskommentiere:
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);
}
Sollte nicht mein Code sie Variablen richtig entsorgen?
Hier ist meine vollständige Code:
[Code removed]
Ich versuche, die Schritte zu folgen, über auf How do I properly clean up Excel interop objects? (die zweite Antwort)
Ich versuchte es, indem ich die volle Schleife in einen Versuch putting und dann schließlich verwendete, aber es war nicht in der Lage, die Variablen zu finden. Vielleicht, weil sie in der Schleife erklärt werden? – TheGateKeeper
Ja, der Versuch/endlich müsste innerhalb der Schleife sein. Jedes Mal, wenn Sie sich das Aussehen ansehen, verweisen Sie auf eine neue Zelle und ihre Schriftart, und Sie müssen alle freigeben. – Joe
Ich habe es einfacher gemacht, wie unten gezeigt – TheGateKeeper