Como: Descarregar um domínio de aplicativo
Quando você tiver terminado o uso de um domínio de aplicativo, descarregue-o usando o método System.AppDomain.Unload. O método Unload normalmente desliga graciosamente o domínio do aplicativo especificado. Durante o processo de descarregamento, nenhum segmento novo pode acessar o domínio de aplicativo, e todas as estruturas de dados específicas do domínio de aplicativo são liberadas.
Assemblies carregados no domínio de aplicativo são removidos e não estão mais disponíveis. Se um assembly no domínio de aplicativo é de domínio neutro, os dados para o assembly permanecem na memória até que todo o processo seja desligado. Não há nenhum mecanismo para descarregar um assembly de domínio neutro que não encerrar o processo inteiro. Há situações em que a solicitação para descarregar um domínio do aplicativo não funciona e resulta em uma CannotUnloadAppDomainException.
O exemplo a seguir cria um novo domínio de aplicativo chamado MyDomain, imprime algumas informações para o console, e então descarrega o domínio de aplicativo. Observe que o código, em seguida, tenta imprimir o nome amigável do domínio de aplicativo descarregado ao console. Esta ação gera uma exceção que é manipulada pelas instruções try/catch no final do programa.
Exemplo
Imports System
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
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);
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.");
}
}
}
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();
}
Consulte também
Tarefas
Como: Criar um domínio de aplicativo
Conceitos
Programação com domínios de aplicativo