Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

AppDomain.Unload-Methode: (AppDomain)

 

Veröffentlicht: Oktober 2016

Entlädt die angegebene Anwendungsdomäne.

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)

[SecurityPermissionAttribute(SecurityAction.Demand, ControlAppDomain = true)]
public static void Unload(
	AppDomain domain
)

Parameter

domain
Type: System.AppDomain

Eine zu entladende Anwendungsdomäne.

Exception Condition
ArgumentNullException

domain ist null.

CannotUnloadAppDomainException

domainkonnte nicht entladen werden.

Exception

Während des Entladungsprozesses ist ein Fehler aufgetreten.

In .NET Framework, Version 2.0 ist ein Thread für das Entladen von Anwendungsdomänen. Dies verbessert die Zuverlässigkeit, insbesondere, wenn .NET Framework gehostet wird. Wenn ein Thread aufruft, Unload, die Zieldomäne für das Entladen markiert ist. Der dedizierte Thread versucht, die Domäne zu entladen, und alle Threads in der Domäne werden abgebrochen. Wenn ein Thread nicht, z. B. abgebrochen wird, weil er nicht verwalteten Code ausgeführt wird, oder weil es ausgeführt wird eine finally Block, klicken Sie dann nach einer Zeitperiode eine CannotUnloadAppDomainException wird ausgelöst, in dem Thread, der ursprünglich aufgerufen Unload. Nach Beendigung des Threads, die letztendlich nicht abgebrochen werden konnte, ist die Zieldomäne nicht entladen. Folglich in .NET Framework, Version 2.0 domain wird nicht entladen wird, garantiert, da es möglicherweise nicht möglich, die Ausführung von Threads zu beenden.

System_CAPS_noteHinweis

In einigen Fällen Aufrufen Unload bewirkt eine sofortige CannotUnloadAppDomainException, z. B. Wenn sie in einer Finalize-Methode aufgerufen wird.

Threads in domain werden beendet, mit der Abort -Methode, die löst eine ThreadAbortException im Thread. Obwohl der Thread umgehend beendet werden soll, weiterhin ausgeführt wird, unvorhersehbar Zeit in einem finally Klausel.

In .NET Framework, Version 1.0 und 1.1, wenn der Thread aufruft Unload läuft in domain, ein anderer Thread zum Ausführen des Entladevorgangs gestartet wird. Wenn domain kann nicht entladen werden kann, eine CannotUnloadAppDomainException wird ausgelöst, in diesem Thread nicht im ursprünglichen Thread, die aufgerufen Unload. Jedoch, wenn der Thread aufruft Unload ausgeführt wird, außerhalb domain, dass der Thread die Ausnahme empfangen.

Im folgenden Codebeispiel wird gezeigt, wie eine Anwendungsdomäne entladen wird.

using System;
using System.Reflection;
using System.Security.Policy;  //for evidence object
class ADUnload
{
	public static void Main()
	{

		//Create evidence for the new appdomain.
		Evidence adevidence = AppDomain.CurrentDomain.Evidence;

 		// Create the new application domain.
 		AppDomain domain = AppDomain.CreateDomain("MyDomain", adevidence);

            	Console.WriteLine("Host domain: " + AppDomain.CurrentDomain.FriendlyName);
            	Console.WriteLine("child domain: " + domain.FriendlyName);
		// Unload the application domain.
		AppDomain.Unload(domain);

		try
		{
		Console.WriteLine();
		// Note that the following statement creates an exception because the domain no longer exists.
            	Console.WriteLine("child domain: " + domain.FriendlyName);
		}

		catch (AppDomainUnloadedException e)
		{
		Console.WriteLine("The appdomain MyDomain does not exist.");
		}

	}

}

SecurityPermission

to add an event handler for this event. Associated enumeration: F:System.Security.Permissions.SecurityPermissionFlag.ControlAppDomain. Security action: F:System.Security.Permissions.SecurityAction.Demand.

.NET Framework
Verfügbar seit 1.1
Zurück zum Anfang
Anzeigen: