Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen.
Übersetzung
Original
Dieser Artikel wurde noch nicht bewertet - Dieses Thema bewerten.

AppDomain.Unload-Methode

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
Typ: System.AppDomain
Eine zu entladende Anwendungsdomäne.
Ausnahme Bedingung
ArgumentNullException

domain hat den Wert null.

CannotUnloadAppDomainException

domain konnte nicht entladen werden.

Exception

Während des Entladeprozesses ist ein Fehler aufgetreten.

In .NET Framework, Version 2.0, ist ein eigener Thread für das Entladen von Anwendungsdomänen vorhanden. Dies verbessert die Zuverlässigkeit, insbesondere wenn .NET Framework gehostet wird. Wenn ein Thread Unload aufruft, wird die Zieldomäne für die Entladung gekennzeichnet. Der allein zuständige Thread versucht, die Domäne zu entladen, und alle Threads in der Domäne werden beendet. Wenn ein Thread nicht beendet werden kann, z. B. weil er nicht verwalteten Code oder einen finally-Block ausführt, wird nach gewisser Zeit eine CannotUnloadAppDomainException in dem Thread ausgelöst, der Unload ursprünglich aufgerufen hat. Wenn der Thread, der zunächst nicht beendet werden konnte, schließlich beendet wird, wird die Zieldomäne nicht entladen. Daher wird in .NET Framework, Version 2.0, nicht sichergestellt, dass domain entladen wird, da ausgeführte Threads möglicherweise nicht beendet werden können.

Hinweis Hinweis

In einigen Fällen löst das Aufrufen von Unload sofort eine CannotUnloadAppDomainException aus, z. B. wenn der Aufruf in einem Finalizer erfolgt.

Die Threads in domain werden mit der Abort-Methode beendet, die im Thread eine ThreadAbortException auslöst. Obwohl der Thread umgehend beendet werden müsste, kann er unvorhersehbar lange in einer finally-Klausel verweilen.

Versionskompatibilität

Wenn in .NET Framework, Version 1.0 und 1.1, der Unload aufrufende Thread in domain ausgeführt wird, wird zum Ausführen des Entladevorgangs ein anderer Thread gestartet. Wenn domain nicht entladen werden kann, wird in diesem Thread eine CannotUnloadAppDomainException ausgelöst und nicht in dem Thread, der Unload ursprünglich aufgerufen hat. Wenn der Thread, der Unload aufgerufen hat, jedoch außerhalb der domain ausgeführt wird, wird die Ausnahme in diesem Thread ausgelöst.

Das folgende Codebeispiel zeigt das Entladen einer Anwendungsdomäne.


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.");
		}
		
	}
	
}


.NET Framework

Unterstützt in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 oder höher, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core wird nicht unterstützt), Windows Server 2008 R2 (Server Core wird mit SP1 oder höher unterstützt), Windows Server 2003 SP2

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.
Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)
Community-Inhalt Hinzufügen
Anmerkungen FAQ