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?