Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hinweis
Dieser Artikel ist spezifisch für .NET Framework. Sie gilt nicht für neuere Implementierungen von .NET, einschließlich .NET 6 und höherer Versionen.
Wenn Sie mit der Verwendung einer Anwendungsdomäne fertig sind, entladen Sie sie mit der AppDomain.Unload Methode. Die Unload Methode beendet ordnungsgemäß die angegebene Anwendungsdomäne. Während des Entladungsprozesses können keine neuen Threads auf die Anwendungsdomäne zugreifen, und alle anwendungsspezifischen Datenstrukturen werden freigegeben.
Assemblys, die in die Anwendungsdomäne geladen wurden, werden entfernt und sind nicht mehr verfügbar. Wenn eine Assembly in der Anwendungsdomäne domänenneutral ist, bleiben die Daten für die Assembly im Arbeitsspeicher, bis der gesamte Prozess beendet wird. Es gibt keinen Mechanismus zum Entladen einer domänenneutralen Assembly, außer das Herunterfahren des gesamten Prozesses. Es gibt Situationen, in denen die Anforderung zum Herunterfahren einer Anwendungsdomäne nicht erfolgreich ist und zu einer CannotUnloadAppDomainException führt.
Im folgenden Beispiel wird eine neue Anwendungsdomäne namens MyDomain erstellt. Einige Informationen werden in die Konsole ausgegeben, und anschließend wird die Anwendungsdomäne entladen. Beachten Sie, dass der Code dann versucht, den freundlichen Namen der entladenen Anwendungsdomäne auf der Konsole auszugeben. Diese Aktion generiert eine Ausnahme, die von den try/catch-Anweisungen am Ende des Programms behandelt wird.
Example
using namespace System;
using namespace System::Reflection;
ref class AppDomain2
{
public:
static void Main()
{
Console::WriteLine("Creating new AppDomain.");
AppDomain^ domain = AppDomain::CreateDomain("MyDomain", nullptr);
Console::WriteLine("Host domain: " + AppDomain::CurrentDomain->FriendlyName);
Console::WriteLine("child domain: " + domain->FriendlyName);
AppDomain::Unload(domain);
try
{
Console::WriteLine();
Console::WriteLine("Host domain: " + AppDomain::CurrentDomain->FriendlyName);
// The following statement creates an exception because the domain no longer exists.
Console::WriteLine("child domain: " + domain->FriendlyName);
}
catch (AppDomainUnloadedException^ e)
{
Console::WriteLine(e->GetType()->FullName);
Console::WriteLine("The appdomain MyDomain does not exist.");
}
}
};
int main()
{
AppDomain2::Main();
}
using System;
using System.Reflection;
class AppDomain2
{
public static void Main()
{
Console.WriteLine("Creating new AppDomain.");
AppDomain domain = AppDomain.CreateDomain("MyDomain", null);
Console.WriteLine("Host domain: " + AppDomain.CurrentDomain.FriendlyName);
Console.WriteLine("child domain: " + domain.FriendlyName);
try
{
AppDomain.Unload(domain);
Console.WriteLine();
Console.WriteLine("Host domain: " + AppDomain.CurrentDomain.FriendlyName);
// The following statement creates an exception because the domain no longer exists.
Console.WriteLine("child domain: " + domain.FriendlyName);
}
catch (AppDomainUnloadedException e)
{
Console.WriteLine(e.GetType().FullName);
Console.WriteLine("The appdomain MyDomain does not exist.");
}
}
}
Imports System.Reflection
Class AppDomain2
Public Shared Sub Main()
Console.WriteLine("Creating new AppDomain.")
Dim domain As AppDomain = AppDomain.CreateDomain("MyDomain", Nothing)
Console.WriteLine("Host domain: " + AppDomain.CurrentDomain.FriendlyName)
Console.WriteLine("child domain: " + domain.FriendlyName)
AppDomain.Unload(domain)
Try
Console.WriteLine()
Console.WriteLine("Host domain: " + AppDomain.CurrentDomain.FriendlyName)
' The following statement creates an exception because the domain no longer exists.
Console.WriteLine("child domain: " + domain.FriendlyName)
Catch e As AppDomainUnloadedException
Console.WriteLine(e.GetType().FullName)
Console.WriteLine("The appdomain MyDomain does not exist.")
End Try
End Sub
End Class