2012-04-07 12 views
2

Welche Ursachen werden mit der Methode Finalize aufgerufen?.Net CLR Entladen gegen Herunterfahren?

2 Antworten (4) auf diese Frage lautet:

  • The CLR is unloading an AppDomain Wenn ein AppDomain leert, die CLR nichts in der Anwendungsdomäne betrachtet eine Wurzel zu sein, und eine Speicherbereinigungs bestehend aus alle Generationen werden durchgeführt.

  • The CLR is shutting down Die CLR wird heruntergefahren, wenn ein Prozess normal beendet wird (im Gegensatz zu einem externen Herunterfahren über Task-Manager, zum Beispiel).

Ich gehe davon aus, dass The CLR is unloading an AppDomain ist, wenn das Programm (Konsole [exe] zum Beispiel) geschlossen wird (durch Schließen/normale Programmende drücken)

Was The CLR is shutting down? Sie die [Exe] Programm Analogie oben:

  • was bedeutet es? Wie kann ich ShutDown CLR ...?
  • [in der IIS-Welt] bedeutet es IIS zurückgesetzt?

bitte, kann ich eine kleine Erklärung haben?

+0

glaube nicht, dass es irgendeine Art von * Herunterfahren * von 'CLR' gibt, wahrscheinlich ist es nur eine Art zu sagen/Nachdenken über Entladen .... – Tigran

Antwort

6

Die AppDomain ist eine genauere Einheit als der Prozess. Ein Prozess kann mehrere AppDomain-Instanzen haben, von denen jede separat entladen werden kann.

Die CLR-Abschaltung ist der Prozess beendet.

Die AppDomain entladen ist jede AppDomain separat.

(obwohl ich nicht persönlich würde garantieren, ohne die Dokumentation überprüft, dass alle Finalizers usw. in jedem Fall ausgeführt werden)

Als Beispiel ich mehr AppDomain-Instanzen in einem lang andauernden selbst aktualisierende Windows-Dienst verwenden ; Wenn neue Versionen erkannt werden, zieht es die neuen Binärdateien herunter, erstellt eine neue Anwendungsdomäne, führt sie aus, schaltet zukünftige Operationen auf die neue Anwendungsdomäne um und entlädt die alte Anwendungsdomäne (wenn die Ausführung der Operationen abgeschlossen ist).

+0

+1 worüber ich eigentlich nachgedacht habe, aber warn ' t Sicher, einen Beitrag zu machen :) – Tigran

+0

whan Im laufen einfache Konsole Anwendung .... es hat 1 AppDomain und 1 Prozess .... aint es? –

+0

@Royi ja eine einfache Konsole exe hat einen Prozess und eine AppDomain –

Verwandte Themen