AppDomain.Unload(AppDomain) AppDomain.Unload(AppDomain) AppDomain.Unload(AppDomain) AppDomain.Unload(AppDomain) Method

Definition

Entlädt die angegebene Anwendungsdomäne.Unloads the specified application domain.

public:
 static void Unload(AppDomain ^ domain);
public static void Unload (AppDomain domain);
static member Unload : AppDomain -> unit
Public Shared Sub Unload (domain As AppDomain)

Parameter

domain
AppDomain AppDomain AppDomain AppDomain

Eine zu entladende Anwendungsdomäne.An application domain to unload.

Ausnahmen

Während des Entladeprozesses ist ein Fehler aufgetreten.An error occurred during the unload process.

Beispiele

Im folgenden Codebeispiel wird gezeigt, wie eine Anwendungsdomäne entladen wird.The following code example shows how to unload an application domain.

using namespace System;
using namespace System::Reflection;
using namespace System::Security::Policy;

//for evidence Object*
int 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: {0}", AppDomain::CurrentDomain->FriendlyName );
   Console::WriteLine( "child domain: {0}", 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: {0}", domain->FriendlyName );
   }
   catch ( AppDomainUnloadedException^ /*e*/ ) 
   {
      Console::WriteLine( "The appdomain MyDomain does not exist." );
   }

}

using System;
using System.Reflection;
using System.Security.Policy;
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.");
		}
		
	}
	
}
Imports System
Imports System.Reflection
Imports System.Security.Policy

Class ADUnload
   
   Public Shared Sub Main()

      'Create evidence for the new appdomain.
      Dim adevidence As Evidence = AppDomain.CurrentDomain.Evidence

      ' Create the new application domain.
      Dim domain As AppDomain = 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 e As AppDomainUnloadedException
         Console.WriteLine("The appdomain MyDomain does not exist.")
      End Try
   End Sub 'Main 
End Class 'ADUnload

Hinweise

In der .NET Framework Version 2,0 gibt es einen Thread, der zum Entladen von Anwendungs Domänen dediziert ist.In the .NET Framework version 2.0 there is a thread dedicated to unloading application domains. Dadurch wird die Zuverlässigkeit verbessert, insbesondere wenn die .NET Framework gehostet wird.This improves reliability, especially when the .NET Framework is hosted. Wenn ein Thread aufruft Unload, wird die Zieldomäne zum Entladen markiert.When a thread calls Unload, the target domain is marked for unloading. Der dedizierte Thread versucht, die Domäne zu entladen, und alle Threads in der Domäne werden abgebrochen.The dedicated thread attempts to unload the domain, and all threads in the domain are aborted. Wenn ein Thread nicht abgebrochen wird (z. b. weil er nicht verwalteten Code ausführt oder weil er einen finally -Block ausführt), wird eine CannotUnloadAppDomainException nach einem bestimmten Zeitraum in dem Thread ausgelöst, der ursprünglich aufgerufen Unloadhat.If a thread does not abort, for example because it is executing unmanaged code, or because it is executing a finally block, then after a period of time a CannotUnloadAppDomainException is thrown in the thread that originally called Unload. Wenn der Thread, der nicht abgebrochen werden konnte, letztendlich beendet wird, wird die Zieldomäne nicht entladen.If the thread that could not be aborted eventually ends, the target domain is not unloaded. Daher ist es in der .NET Framework Version domain 2,0 nicht garantiert, dass Sie entladen wird, da es möglicherweise nicht möglich ist, die Ausführung von Threads zu beenden.Thus, in the .NET Framework version 2.0 domain is not guaranteed to unload, because it might not be possible to terminate executing threads.

Hinweis

In einigen Fällen verursacht der Unload Aufruf von einen CannotUnloadAppDomainExceptionunmittelbaren, z. b. wenn er in einem Finalizer aufgerufen wird.In some cases, calling Unload causes an immediate CannotUnloadAppDomainException, for example if it is called in a finalizer.

Die Threads in domain werden mit der Abort -Methode beendet, die eine ThreadAbortException im Thread auslöst.The threads in domain are terminated using the Abort method, which throws a ThreadAbortException in the thread. Obwohl der Thread umgehend beendet werden soll, kann er in einer finally -Klausel weiterhin für einen unvorhersehbaren Zeitraum ausgeführt werden.Although the thread should terminate promptly, it can continue executing for an unpredictable amount of time in a finally clause.

VersionskompatibilitätVersion Compatibility

In den .NET Framework Version 1,0 und 1,1, wenn der Thread, Unload der aufruft, domainin ausgeführt wird, wird ein anderer Thread gestartet, um den Entladevorgang auszuführen.In the .NET Framework version 1.0 and 1.1 if the thread that calls Unload is running in domain, another thread is started to perform the unload operation. Wenn domain nicht entladen werden kann, CannotUnloadAppDomainException wird in diesem Thread eine ausgelöst, nicht im ursprünglichen Thread, der Unloadaufgerufen hat.If domain cannot be unloaded, a CannotUnloadAppDomainException is thrown in that thread, not in the original thread that called Unload. Wenn der Thread, der aufruft Unload , jedoch außerhalb domainvon ausgeführt wird, empfängt dieser Thread die Ausnahme.However, if the thread that calls Unload is running outside domain, that thread receives the exception.

Sicherheit

SecurityPermission
um einen Ereignishandler für dieses Ereignis hinzuzufügen.to add an event handler for this event. Zugeordnete Enumeration: ControlAppDomainAssociated enumeration: ControlAppDomain. Sicherheitsaktion: Demand.Security action: Demand.

Gilt für: