Ich entwickle schon seit einiger Zeit Bürolösungen in VBA und verfüge über relativ gute Kenntnisse in der Büroentwicklung in VBA. Ich habe beschlossen, dass es an der Zeit ist, etwas echtes Programmieren mit .Net zu lernen und einige Kinderkrankheiten zu haben.Kann ich etwas über ReleaseComObject erfahren? Kann ich es ignorieren?
Nachdem wir eine Reihe von Artikeln und Foren (hier und anderswo) durchgesehen haben, scheint es einige gemischte Informationen bezüglich der Speicherverwaltung in .Net bei der Verwendung von COM-Objekten zu geben.
Manche Leute sagen, ich sollte immer COM-Objekte deterministisch freigeben und andere sagen, ich sollte es fast nie tun.
Leute sagen, dass ich es tun sollte.
The book 'Professional Excel Development' auf Seite 861.
This stack exchange question hat, indem er „jede Bezugnahme Sie auf ein COM-Objekt machen muss freigegeben werden, wenn Sie nicht beantwortet tun , der Prozess wird im Speicher bleiben "
This blog schlägt vor, es zu benutzen löste seine Probleme.
sagen, Leute, die ich sollte es nicht tun:
This MSDN blog by Eric Carter Zustände „In VSTO Szenarien, müssen Sie in der Regel nicht immer ReleaseComObject nutzen.“
The book 'VSTO for Office 2007' die Co-Autor von Eric Carter scheint keine Erwähnung der Speicherverwaltung oder ReleaseComObject zu erwähnen.
This MSDN blog by Paul Harrington sagt, tun Sie es nicht.
Jemand mit gemischter Beratung:
Jake Ginnivan sagt, dass ich es immer Objekte auf COM tun soll, die die Methode Umfang nicht verlassen. Wenn ein COM-Objekt den Methodenbereich verlässt, dann vergessen Sie es. Warum kann ich die ganze Zeit nicht einfach vergessen?
Der Blog von Paul Harrington scheint darauf hinzudeuten, dass sich der Ratschlag von MS irgendwann in der Vergangenheit geändert hat. Ist der Aufruf von ReleaseCOMObject früher die beste Vorgehensweise, ist es aber nicht mehr? Kann ich die feineren Details der Speicherverwaltung MS überlassen und davon ausgehen, dass alles in Ordnung ist?
Ein Experte für asynchronen Code und COM-Interop? Haben Sie Spaß daran, die schwierigsten Themen in C# zu finden, um zum Experten zu werden? ;) –
@ScottChamberlain, weit davon entfernt ein Experte zu sein, ziemlich sicher angewandtes Wissen hier und da, aber danke für deine guten Worte :) – Noseratio
Danke für deine Hilfe. Ich denke, das Endergebnis ist "es kommt darauf an". Ich denke, der einzige Weg, damit umzugehen, ist, über das Speichermanagement in COM vs .Net zu lernen. Ich war auf der Suche nach einem einfachen Ausweg, aber ich denke, es gibt keinen. –