Die Entladung der geladenen Assembly mit Assembly.LoadFrom()

Brauche ich, um die Zeit zu überprüfen Betrag ausführen GetTypes() nach dem laden der dll.
Der code ist wie folgt.

Assembly assem = Assembly.LoadFrom(file);
sw = Stopwatch.StartNew();
var types1 = assem.GetTypes();
sw.Stop();
double time1 = sw.Elapsed.TotalMilliseconds;

Möchte ich entladen und neu laden der dll, auf die Uhr schauen, um zu verbringen, läuft GetTypes() wieder.

  • Wie kann ich das entladen? assem = null ist gut genug?
  • Gibt es einen expliziten Weg, um zu rufen garbage collector zurückfordern, die der Ressource zugeordnet assem?
Die kurze Antwort ist, dass Sie nicht entladen Assemblys; Sie kann nur entladen AppDomains. Es gibt eine Reihe von Einschränkungen auferlegt, wenn Sie das laden einer Assembly in neue AppDomain, so dass ich empfehlen, tun Sie etwas Forschung auf dem Thema, um ein Gefühl dafür bekommen, wie Sie funktionieren. Das heißt, Sie können das laden der gleichen Versammlung wieder, auch wenn der Vorherige war auch nicht entladen.
Hat jemand probiert, was passiert, um die Assemblys, wenn Sie null? Sie erhalten garbage Collection oder befreit in irgendeiner Weise ? Ich bin besorgt über die Erinnerung.
Ein sehr related post hier.

InformationsquelleAutor prosseek | 2011-06-06

Schreibe einen Kommentar