804 Stimmen

Wie bereinige ich Excel-Interop-Objekte richtig?

Ich verwende das Excel-Interop in C# ( ApplicationClass ) und habe den folgenden Code in meiner finally-Klausel platziert:

while (System.Runtime.InteropServices.Marshal.ReleaseComObject(excelSheet) != 0) { }
excelSheet = null;
GC.Collect();
GC.WaitForPendingFinalizers();

Obwohl diese Art von Arbeit funktioniert, ist die Excel.exe Prozess bleibt im Hintergrund, auch wenn ich Excel schließe. Er wird erst freigegeben, wenn ich die Anwendung manuell schließe.

Was mache ich falsch, oder gibt es eine Alternative, um sicherzustellen, dass Interop-Objekte ordnungsgemäß entsorgt werden?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X