Descarga el dominio de aplicación especificado.
Espacio de nombres: System
Ensamblado: mscorlib (en mscorlib.dll)
Visual Basic (Declaración)
Public Shared Sub Unload ( _
domain As AppDomain _
)
Dim domain As AppDomain
AppDomain.Unload(domain)
public static void Unload (
AppDomain domain
)
public:
static void Unload (
AppDomain^ domain
)
public static void Unload (
AppDomain domain
)
public static function Unload (
domain : AppDomain
)
Parámetros
- domain
Dominio de aplicación que se va a descargar.
En la versión 2.0 de .NET Framework, hay un subproceso dedicado para descargar dominios de aplicación. Esto mejora la confiabilidad, sobre todo cuando .NET Framework se aloja en host. Cuando un subproceso llama a Unload, el dominio de destino se marca para descargarlo. El subproceso dedicado intenta descargar el dominio y todos los subprocesos del dominio se anulan. Si no se anula un subproceso (porque se esté ejecutando código no administrado o porque se esté ejecutando un bloque finally, por ejemplo), después de un período de tiempo se produce una excepción CannotUnloadAppDomainException en el subproceso que llamó a Unload en un principio. Si finalmente concluye el subproceso que no se pudo anular, el dominio de destino no se descarga. Así, en la versión 2.0 de .NET Framework, no se garantiza que se descargue domain porque quizás no sea posible finalizar los subprocesos que se estén ejecutando.
Nota |
|---|
| En algunos casos, la llamada a Unload produce una excepción CannotUnloadAppDomainException inmediata, por ejemplo, si se llama en un finalizador. |
Los subprocesos en domain se finalizan utilizando el método Abort, que produce una excepción ThreadAbortException en el subproceso. Si bien el subproceso debe terminar rápidamente, podrá seguir ejecutándose durante un período de tiempo impredecible en una cláusula finally.
Compatibilidad de versiones
En las versiones 1.0 y 1.1 de .NET Framework, si el subproceso que llama a Unload se está ejecutando en domain, se inicia otro subproceso para que lleve a cabo la operación de descarga. Si no se puede descargar domain, se produce una excepción CannotUnloadAppDomainException en ese subproceso y no en el subproceso original que llamó a Unload. Sin embargo, si el subproceso que llama a Unload se está ejecutando fuera de domain, será dicho subproceso el que reciba la excepción.
Imports System
Imports System.Reflection
Imports System.Security.Policy 'for evidence object
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
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.");
}
}
}
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." );
}
}
import System.*;
import System.Reflection.*;
import System.Security.Policy.*; //for evidence object
class ADUnload
{
public static void main(String[] args)
{
// Create evidence for the new appdomain.
Evidence adEvidence = AppDomain.get_CurrentDomain().get_Evidence();
// Create the new application domain.
AppDomain domain = AppDomain.CreateDomain("MyDomain", adEvidence);
Console.WriteLine("Host domain: "
+ AppDomain.get_CurrentDomain().get_FriendlyName());
Console.WriteLine("child domain: " + domain.get_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.get_FriendlyName());
}
catch (AppDomainUnloadedException e) {
Console.WriteLine("The appdomain MyDomain does not exist.");
}
} //main
} //ADUnload
Seguridad de .NET Framework
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter Edition
.NET Framework no admite todas las versiones de cada plataforma. Para obtener una lista de las versiones admitidas, vea Requisitos del sistema.
.NET Framework
Compatible con: 2.0, 1.1, 1.0
.NET Compact Framework
Compatible con: 2.0