Comparteix a través de


AppDomain Clase

Definición

Representa un dominio de aplicación, que es un entorno aislado donde se ejecutan las aplicaciones. Esta clase no puede heredarse.

public ref class AppDomain sealed : MarshalByRefObject
public ref class AppDomain : MarshalByRefObject
public ref class AppDomain sealed : MarshalByRefObject, _AppDomain, System::Security::IEvidenceFactory
public sealed class AppDomain : MarshalByRefObject
public class AppDomain : MarshalByRefObject
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
public sealed class AppDomain : MarshalByRefObject, _AppDomain, System.Security.IEvidenceFactory
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class AppDomain : MarshalByRefObject, _AppDomain, System.Security.IEvidenceFactory
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class AppDomain : MarshalByRefObject
type AppDomain = class
    inherit MarshalByRefObject
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
type AppDomain = class
    inherit MarshalByRefObject
    interface _AppDomain
    interface IEvidenceFactory
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type AppDomain = class
    inherit MarshalByRefObject
    interface _AppDomain
    interface IEvidenceFactory
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type AppDomain = class
    inherit MarshalByRefObject
Public NotInheritable Class AppDomain
Inherits MarshalByRefObject
Public Class AppDomain
Inherits MarshalByRefObject
Public NotInheritable Class AppDomain
Inherits MarshalByRefObject
Implements _AppDomain, IEvidenceFactory
Herencia
Atributos
Implementaciones

Ejemplos

En este ejemplo se muestra cómo crear un nuevo , crear una instancia AppDomainde un tipo en ese nuevo AppDomainy comunicarse con el objeto de ese tipo. Además, en este ejemplo se muestra cómo descargar el AppDomain objeto que provoca la recolección de elementos no utilizados.

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

// Because this class is derived from MarshalByRefObject, a proxy 
// to a MarshalByRefType object can be returned across an AppDomain 
// boundary.
ref class MarshalByRefType : MarshalByRefObject
{
public:
    //  Call this method via a proxy.
    void SomeMethod(String^ callingDomainName)
    {
        // Get this AppDomain's settings and display some of them.
        AppDomainSetup^ ads = AppDomain::CurrentDomain->SetupInformation;
        Console::WriteLine("AppName={0}, AppBase={1}, ConfigFile={2}", 
            ads->ApplicationName, 
            ads->ApplicationBase, 
            ads->ConfigurationFile
        );

        // Display the name of the calling AppDomain and the name 
        // of the second domain.
        // NOTE: The application's thread has transitioned between 
        // AppDomains.
        Console::WriteLine("Calling from '{0}' to '{1}'.", 
            callingDomainName, 
            Thread::GetDomain()->FriendlyName
        );
    };
};

void main()
{
    // Get and display the friendly name of the default AppDomain.
    String^ callingDomainName = Thread::GetDomain()->FriendlyName;
    Console::WriteLine(callingDomainName);

    // Get and display the full name of the EXE assembly.
    String^ exeAssembly = Assembly::GetEntryAssembly()->FullName;
    Console::WriteLine(exeAssembly);

    // Construct and initialize settings for a second AppDomain.
    AppDomainSetup^ ads = gcnew AppDomainSetup();
    ads->ApplicationBase = AppDomain::CurrentDomain->BaseDirectory;

    ads->DisallowBindingRedirects = false;
    ads->DisallowCodeDownload = true;
    ads->ConfigurationFile = 
        AppDomain::CurrentDomain->SetupInformation->ConfigurationFile;

    // Create the second AppDomain.
    AppDomain^ ad2 = AppDomain::CreateDomain("AD #2", 
        AppDomain::CurrentDomain->Evidence, ads);

    // Create an instance of MarshalbyRefType in the second AppDomain. 
    // A proxy to the object is returned.
    MarshalByRefType^ mbrt = 
        (MarshalByRefType^) ad2->CreateInstanceAndUnwrap(
            exeAssembly, 
            MarshalByRefType::typeid->FullName
        );

    // Call a method on the object via the proxy, passing the 
    // default AppDomain's friendly name in as a parameter.
    mbrt->SomeMethod(callingDomainName);

    // Unload the second AppDomain. This deletes its object and 
    // invalidates the proxy object.
    AppDomain::Unload(ad2);
    try
    {
        // Call the method again. Note that this time it fails 
        // because the second AppDomain was unloaded.
        mbrt->SomeMethod(callingDomainName);
        Console::WriteLine("Sucessful call.");
    }
    catch(AppDomainUnloadedException^)
    {
        Console::WriteLine("Failed call; this is expected.");
    }
}

/* This code produces output similar to the following: 

AppDomainX.exe
AppDomainX, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
AppName=, AppBase=C:\AppDomain\bin, ConfigFile=C:\AppDomain\bin\AppDomainX.exe.config
Calling from 'AppDomainX.exe' to 'AD #2'.
Failed call; this is expected.
 */
using System;
using System.Reflection;
using System.Threading;

class Module1
{
    public static void Main()
    {
        // Get and display the friendly name of the default AppDomain.
        string callingDomainName = Thread.GetDomain().FriendlyName;
        Console.WriteLine(callingDomainName);

        // Get and display the full name of the EXE assembly.
        string exeAssembly = Assembly.GetEntryAssembly().FullName;
        Console.WriteLine(exeAssembly);

        // Construct and initialize settings for a second AppDomain.
        AppDomainSetup ads = new AppDomainSetup();
        ads.ApplicationBase = AppDomain.CurrentDomain.BaseDirectory;

        ads.DisallowBindingRedirects = false;
        ads.DisallowCodeDownload = true;
        ads.ConfigurationFile =
            AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;

        // Create the second AppDomain.
        AppDomain ad2 = AppDomain.CreateDomain("AD #2", null, ads);

        // Create an instance of MarshalbyRefType in the second AppDomain.
        // A proxy to the object is returned.
        MarshalByRefType mbrt =
            (MarshalByRefType) ad2.CreateInstanceAndUnwrap(
                exeAssembly,
                typeof(MarshalByRefType).FullName
            );

        // Call a method on the object via the proxy, passing the
        // default AppDomain's friendly name in as a parameter.
        mbrt.SomeMethod(callingDomainName);

        // Unload the second AppDomain. This deletes its object and
        // invalidates the proxy object.
        AppDomain.Unload(ad2);
        try
        {
            // Call the method again. Note that this time it fails
            // because the second AppDomain was unloaded.
            mbrt.SomeMethod(callingDomainName);
            Console.WriteLine("Sucessful call.");
        }
        catch(AppDomainUnloadedException)
        {
            Console.WriteLine("Failed call; this is expected.");
        }
    }
}

// Because this class is derived from MarshalByRefObject, a proxy
// to a MarshalByRefType object can be returned across an AppDomain
// boundary.
public class MarshalByRefType : MarshalByRefObject
{
    //  Call this method via a proxy.
    public void SomeMethod(string callingDomainName)
    {
        // Get this AppDomain's settings and display some of them.
        AppDomainSetup ads = AppDomain.CurrentDomain.SetupInformation;
        Console.WriteLine("AppName={0}, AppBase={1}, ConfigFile={2}",
            ads.ApplicationName,
            ads.ApplicationBase,
            ads.ConfigurationFile
        );

        // Display the name of the calling AppDomain and the name
        // of the second domain.
        // NOTE: The application's thread has transitioned between
        // AppDomains.
        Console.WriteLine("Calling from '{0}' to '{1}'.",
            callingDomainName,
            Thread.GetDomain().FriendlyName
        );
    }
}

/* This code produces output similar to the following:

AppDomainX.exe
AppDomainX, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
AppName=, AppBase=C:\AppDomain\bin, ConfigFile=C:\AppDomain\bin\AppDomainX.exe.config
Calling from 'AppDomainX.exe' to 'AD #2'.
Failed call; this is expected.
 */
open System
open System.Reflection
open System.Threading

// Because this class is derived from MarshalByRefObject, a proxy
// to a MarshalByRefType object can be returned across an AppDomain
// boundary.
type MarshalByRefType() =
    inherit MarshalByRefObject()
    
    //  Call this method via a proxy.
    member _.SomeMethod(callingDomainName) =
        // Get this AppDomain's settings and display some of them.
        let ads = AppDomain.CurrentDomain.SetupInformation
        printfn $"AppName={ads.ApplicationName}, AppBase={ads.ApplicationBase}, ConfigFile={ads.ConfigurationFile}"

        // Display the name of the calling AppDomain and the name
        // of the second domain.
        // NOTE: The application's thread has transitioned between
        // AppDomains.
        printfn $"Calling from '{callingDomainName}' to '{Thread.GetDomain().FriendlyName}'."

// Get and display the friendly name of the default AppDomain.
let callingDomainName = Thread.GetDomain().FriendlyName
printfn $"{callingDomainName}"

// Get and display the full name of the EXE assembly.
let exeAssembly = Assembly.GetEntryAssembly().FullName
printfn $"{exeAssembly}"

// Construct and initialize settings for a second AppDomain.
let ads = AppDomainSetup()
ads.ApplicationBase <- AppDomain.CurrentDomain.BaseDirectory

ads.DisallowBindingRedirects <- false
ads.DisallowCodeDownload <- true
ads.ConfigurationFile <-
    AppDomain.CurrentDomain.SetupInformation.ConfigurationFile

// Create the second AppDomain.
let ad2 = AppDomain.CreateDomain("AD #2", null, ads)

// Create an instance of MarshalbyRefType in the second AppDomain.
// A proxy to the object is returned.
let mbrt =
    ad2.CreateInstanceAndUnwrap(
        exeAssembly,
        typeof<MarshalByRefType>.FullName) :?> MarshalByRefType

// Call a method on the object via the proxy, passing the
// default AppDomain's friendly name in as a parameter.
mbrt.SomeMethod callingDomainName

// Unload the second AppDomain. This deletes its object and
// invalidates the proxy object.
AppDomain.Unload ad2
try
    // Call the method again. Note that this time it fails
    // because the second AppDomain was unloaded.
    mbrt.SomeMethod callingDomainName
    printfn "Sucessful call."
with :? AppDomainUnloadedException ->
    printfn "Failed call this is expected."

(* This code produces output similar to the following:

AppDomainX.exe
AppDomainX, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
AppName=, AppBase=C:\AppDomain\bin, ConfigFile=C:\AppDomain\bin\AppDomainX.exe.config
Calling from 'AppDomainX.exe' to 'AD #2'.
Failed call this is expected.
 *)
Imports System.Reflection
Imports System.Threading

Module Module1
    Sub Main()

        ' Get and display the friendly name of the default AppDomain.
        Dim callingDomainName As String = Thread.GetDomain().FriendlyName
        Console.WriteLine(callingDomainName)

        ' Get and display the full name of the EXE assembly.
        Dim exeAssembly As String = [Assembly].GetEntryAssembly().FullName
        Console.WriteLine(exeAssembly)

        ' Construct and initialize settings for a second AppDomain.
        Dim ads As New AppDomainSetup()
        ads.ApplicationBase = AppDomain.CurrentDomain.BaseDirectory
        ads.DisallowBindingRedirects = False
        ads.DisallowCodeDownload = True
        ads.ConfigurationFile = _
            AppDomain.CurrentDomain.SetupInformation.ConfigurationFile

        ' Create the second AppDomain.
        Dim ad2 As AppDomain = AppDomain.CreateDomain("AD #2", Nothing, ads)

        ' Create an instance of MarshalbyRefType in the second AppDomain. 
        ' A proxy to the object is returned.
        Dim mbrt As MarshalByRefType = CType( _
            ad2.CreateInstanceAndUnwrap(exeAssembly, _
                 GetType(MarshalByRefType).FullName), MarshalByRefType)

        ' Call a method on the object via the proxy, passing the default 
        ' AppDomain's friendly name in as a parameter.
        mbrt.SomeMethod(callingDomainName)

        ' Unload the second AppDomain. This deletes its object and 
        ' invalidates the proxy object.
        AppDomain.Unload(ad2)
        Try
            ' Call the method again. Note that this time it fails because 
            ' the second AppDomain was unloaded.
            mbrt.SomeMethod(callingDomainName)
            Console.WriteLine("Sucessful call.")
        Catch e As AppDomainUnloadedException
            Console.WriteLine("Failed call; this is expected.")
        End Try

    End Sub
End Module

' Because this class is derived from MarshalByRefObject, a proxy 
' to a MarshalByRefType object can be returned across an AppDomain 
' boundary.
Public Class MarshalByRefType
    Inherits MarshalByRefObject

    '  Call this method via a proxy.
    Public Sub SomeMethod(ByVal callingDomainName As String)

        ' Get this AppDomain's settings and display some of them.
        Dim ads As AppDomainSetup = AppDomain.CurrentDomain.SetupInformation
        Console.WriteLine("AppName={0}, AppBase={1}, ConfigFile={2}", _
            ads.ApplicationName, ads.ApplicationBase, ads.ConfigurationFile)

        ' Display the name of the calling AppDomain and the name 
        ' of the second domain.
        ' NOTE: The application's thread has transitioned between 
        ' AppDomains.
        Console.WriteLine("Calling from '{0}' to '{1}'.", _
            callingDomainName, Thread.GetDomain().FriendlyName)
    End Sub
End Class

'This code produces output similar to the following:
' 
' AppDomainX.exe
' AppDomainX, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
' AppName=, AppBase=C:\AppDomain\bin, ConfigFile=C:\AppDomain\bin\AppDomainX.exe.config
' Calling from 'AppDomainX.exe' to 'AD #2'.
' Failed call; this is expected.

Comentarios

Los dominios de aplicación, representados por AppDomain objetos, ayudan a proporcionar aislamiento, descarga y límites de seguridad para ejecutar código administrado.

  • Use dominios de aplicación para aislar las tareas que podrían reducir un proceso. Si el estado de AppDomain que ejecuta una tarea se vuelve inestable, AppDomain se puede descargar sin afectar al proceso. Esto es importante cuando un proceso debe ejecutarse durante largos períodos sin reiniciarse. También puede usar dominios de aplicación para aislar las tareas que no deben compartir datos.

  • Si un ensamblado se carga en el dominio de aplicación predeterminado, no se puede descargar de la memoria mientras se ejecuta el proceso. Sin embargo, si abre un segundo dominio de aplicación para cargar y ejecutar el ensamblado, el ensamblado se descarga cuando se descarga ese dominio de aplicación. Use esta técnica para minimizar el conjunto de trabajo de procesos de larga duración que ocasionalmente usan archivos DLL grandes.

Nota

En .NET Core, la AppDomain implementación está limitada por diseño y no proporciona aislamiento, descarga ni límites de seguridad. Para .NET Core, hay exactamente uno AppDomain. El aislamiento y la descarga se proporcionan a través de AssemblyLoadContext. Los límites de seguridad deben proporcionarse mediante límites de proceso y técnicas de comunicación remota adecuadas.

Varios dominios de aplicación se pueden ejecutar en un único proceso; sin embargo, no hay una correlación uno a uno entre los dominios de aplicación y los subprocesos. Varios subprocesos pueden pertenecer a un único dominio de aplicación y, mientras que un subproceso determinado no se limita a un dominio de aplicación único, en un momento dado, un subproceso se ejecuta en un único dominio de aplicación.

Los dominios de aplicación se crean mediante el CreateDomain método . AppDomain Las instancias se usan para cargar y ejecutar ensamblados (Assembly). AppDomain Cuando ya no está en uso, se puede descargar.

La AppDomain clase implementa un conjunto de eventos que permiten a las aplicaciones responder cuando se carga un ensamblado, cuando se descarga un dominio de aplicación o cuando se produce una excepción no controlada.

Para obtener más información sobre el uso de dominios de aplicación, consulte Dominios de aplicación.

Esta clase implementa las MarshalByRefObjectinterfaces , _AppDomainy IEvidenceFactory .

Nunca debe crear un contenedor remoto para un AppDomain objeto . Si lo hace, podría publicar una referencia remota a ese AppDomain, exponiendo métodos como CreateInstance el acceso remoto y destruyendo eficazmente la seguridad de acceso al código para ese AppDomain. Los clientes malintencionados que se conectan al remoto AppDomain podrían obtener acceso a cualquier recurso al que tiene AppDomain acceso el propio . No cree contenedores remotos para ningún tipo que extienda MarshalByRefObject y que implemente métodos que podrían usar clientes malintencionados para omitir el sistema de seguridad.

Precaución

El valor predeterminado de la AppDomainSetup.DisallowCodeDownload propiedad es false. Esta configuración no es segura para los servicios. Para evitar que los servicios descarguen código de confianza parcial, establezca esta propiedad trueen .

Propiedades

ActivationContext

Obtiene el contexto de activación para el dominio de aplicación actual.

ApplicationIdentity

Obtiene la identidad de la aplicación en el dominio de aplicación.

ApplicationTrust

Obtiene información que describe los permisos concedidos a una aplicación y si la aplicación tiene un nivel de confianza que le permita ejecutarse.

BaseDirectory

Obtiene el directorio base que la resolución de ensamblado usa para buscar ensamblados.

CurrentDomain

Obtiene el actual dominio de aplicación del actual Thread.

DomainManager

Obtiene el administrador de dominio que ha proporcionado el host al inicializar el dominio de aplicación.

DynamicDirectory

Obtiene el directorio que la resolución de ensamblado usa para buscar ensamblados creados de forma dinámica.

Evidence

Obtiene el objeto Evidence asociado a este dominio de aplicación.

FriendlyName

Obtiene el nombre descriptivo de este dominio de aplicación.

Id

Obtiene un entero que identifica únicamente el dominio de aplicación en el proceso.

IsFullyTrusted

Obtiene un valor que indica si los ensamblados que se cargan en el dominio de aplicación actual se ejecutan con plena confianza.

IsHomogenous

Obtiene un valor que indica si el dominio de aplicación actual tiene un conjunto de permisos concedido a todos los ensamblados que se cargan en el dominio de aplicación.

MonitoringIsEnabled

Obtiene o establece un valor que indica si la supervisión de la CPU y de la memoria del dominio de aplicación está habilitada para el proceso actual. Una vez que se habilita la supervisión para un proceso, no se puede deshabilitar.

MonitoringSurvivedMemorySize

Obtiene el número de bytes que sobrevivieron a la última recolección y a la que se sabe que hace referencia el dominio de aplicación actual.

MonitoringSurvivedProcessMemorySize

Obtiene los bytes totales que sobrevivieron a la última recolección para todos los dominios de aplicación del proceso.

MonitoringTotalAllocatedMemorySize

Obtiene el tamaño total, en bytes, de todas las asignaciones de memoria realizadas por el dominio de aplicación desde que se creó, sin restar la memoria recopilada.

MonitoringTotalProcessorTime

Obtiene el tiempo total de procesador usado por todos los subprocesos mientras se ejecutaban en el dominio de aplicación actual, desde que el proceso se inició.

PermissionSet
Obsoleto.

Obtiene el conjunto de permisos de un dominio de aplicación en un espacio aislado.

RelativeSearchPath

Obtiene la ruta de acceso del directorio base en que la resolución de ensamblado debe buscar ensamblados privados.

SetupInformation

Obtiene la información de configuración del dominio de aplicación correspondiente a esta instancia.

ShadowCopyFiles

Obtiene una indicación si el dominio de aplicación se configura para archivos de instantánea.

Métodos

AppendPrivatePath(String)
Obsoleto.
Obsoleto.
Obsoleto.
Obsoleto.

Anexa el nombre de directorio especificado a la lista de rutas de acceso privadas.

ApplyPolicy(String)

Devuelve el nombre para mostrar del ensamblado después de aplicar la directiva.

ClearPrivatePath()
Obsoleto.
Obsoleto.
Obsoleto.
Obsoleto.

Restablece la ruta de acceso que especifica la ubicación de ensamblados privados en la cadena vacía ("").

ClearShadowCopyPath()
Obsoleto.
Obsoleto.
Obsoleto.
Obsoleto.

Restablece la lista de directorios que contienen instantáneas de ensamblados en la cadena vacía ("").

CreateComInstanceFrom(String, String)

Crea una nueva instancia de un tipo COM especificado. Los parámetros especifican el nombre de un archivo que contiene un ensamblado con el tipo y el nombre del tipo.

CreateComInstanceFrom(String, String, Byte[], AssemblyHashAlgorithm)

Crea una nueva instancia de un tipo COM especificado. Los parámetros especifican el nombre de un archivo que contiene un ensamblado con el tipo y el nombre del tipo.

CreateDomain(String)
Obsoleto.

Crea un nuevo dominio de aplicación con el nombre especificado.

CreateDomain(String, Evidence)

Crea un nuevo dominio de aplicación con el nombre especificado mediante la evidencia proporcionada.

CreateDomain(String, Evidence, AppDomainSetup)

Crea un nuevo dominio de aplicación con el nombre especificado, la evidencia indicada y la correspondiente información de configuración.

CreateDomain(String, Evidence, AppDomainSetup, PermissionSet, StrongName[])

Crea un nuevo dominio de aplicación usando el nombre, la evidencia, la información de configuración del dominio de aplicación, el conjunto predeterminado de permisos y la matriz de ensamblados de plena confianza que se hayan especificado.

CreateDomain(String, Evidence, String, String, Boolean)

Crea un nuevo dominio de aplicación con el nombre especificado usando la evidencia, la ruta de acceso base de la aplicación, la ruta de búsqueda relativa y un parámetro que especifica si debe cargarse una instantánea de un ensamblado en el dominio de aplicación.

CreateDomain(String, Evidence, String, String, Boolean, AppDomainInitializer, String[])

Crea un nuevo dominio de aplicación con el nombre especificado usando la evidencia, la ruta de acceso base de la aplicación, la ruta de búsqueda relativa y un parámetro que especifica si debe cargarse una instantánea de un ensamblado en el dominio de aplicación. Especifica un método de devolución de llamada que se invoca cuando se inicializa el dominio de aplicación, así como una matriz de argumentos de cadena para pasar al método de devolución de llamada.

CreateInstance(String, String)

Crea una nueva instancia del tipo especificado definido en el ensamblado especificado.

CreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])

Crea una nueva instancia del tipo especificado definido en el ensamblado especificado. Los parámetros especifican un enlazador, marcas de enlace, argumentos de constructor, información específica de la referencia cultural usada para interpretar argumentos y atributos de activación opcionales.

CreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Obsoleto.
Obsoleto.

Crea una nueva instancia del tipo especificado definido en el ensamblado especificado. Los parámetros establecen un enlazador, marcas de enlace, argumentos de constructor, información específica de la referencia cultural usada para interpretar argumentos, atributos de activación y autorización para crear el tipo.

CreateInstance(String, String, Object[])

Crea una nueva instancia del tipo especificado definido en el ensamblado especificado. Un parámetro especifica una matriz de atributos de activación.

CreateInstanceAndUnwrap(String, String)

Crea una nueva instancia del tipo especificado. Los parámetros especifican el ensamblado en el que se definen el tipo y el nombre del tipo.

CreateInstanceAndUnwrap(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])

Crea una nueva instancia del tipo especificado definido en el ensamblado indicado, especificando si se pasa por alto el modelo de mayúsculas y minúsculas del nombre de tipo, los atributos de enlace y el enlazador que se usan para seleccionar el tipo que se va a crear, los argumentos del constructor, la referencia cultural y los atributos de activación.

CreateInstanceAndUnwrap(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Obsoleto.
Obsoleto.

Crea una nueva instancia del tipo especificado. Los parámetros especifican el nombre del tipo, así como la forma en que se encontró y se creó.

CreateInstanceAndUnwrap(String, String, Object[])

Crea una nueva instancia del tipo especificado. Los parámetros especifican el ensamblado en el que se definen el tipo, el nombre del tipo y una matriz de atributos de activación.

CreateInstanceFrom(String, String)

Crea una nueva instancia del tipo especificado definido en el archivo de ensamblado especificado.

CreateInstanceFrom(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])

Crea una nueva instancia del tipo especificado definido en el archivo de ensamblado especificado.

CreateInstanceFrom(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Obsoleto.
Obsoleto.

Crea una nueva instancia del tipo especificado definido en el archivo de ensamblado especificado.

CreateInstanceFrom(String, String, Object[])

Crea una nueva instancia del tipo especificado definido en el archivo de ensamblado especificado.

CreateInstanceFromAndUnwrap(String, String)

Crea una nueva instancia del tipo especificado definido en el archivo de ensamblado especificado.

CreateInstanceFromAndUnwrap(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])

Crea una nueva instancia del tipo especificado definido en el archivo de ensamblado indicado, especificando si se pasa por alto el modelo de mayúsculas y minúsculas del nombre de tipo, los atributos de enlace y el enlazador que se usan para seleccionar el tipo que se va a crear, los argumentos del constructor, la referencia cultural y los atributos de activación.

CreateInstanceFromAndUnwrap(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Obsoleto.
Obsoleto.

Crea una nueva instancia del tipo especificado definido en el archivo de ensamblado especificado.

CreateInstanceFromAndUnwrap(String, String, Object[])

Crea una nueva instancia del tipo especificado definido en el archivo de ensamblado especificado.

CreateObjRef(Type)

Crea un objeto que contiene toda la información relevante necesaria para generar un proxy utilizado para comunicarse con un objeto remoto.

(Heredado de MarshalByRefObject)
DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess)

Define un ensamblado dinámico con el nombre y modo de acceso especificados.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, Evidence)
Obsoleto.
Obsoleto.

Define un ensamblado dinámico usando el nombre especificado, el modo de acceso y la evidencia.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, Evidence, PermissionSet, PermissionSet, PermissionSet)
Obsoleto.
Obsoleto.

Define un ensamblado dinámico usando el nombre especificado, el modo de acceso, la evidencia y las solicitudes de permiso.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, IEnumerable<CustomAttributeBuilder>)

Define un ensamblado dinámico con el nombre especificado, el modo de acceso y los atributos personalizados.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, IEnumerable<CustomAttributeBuilder>, SecurityContextSource)

Define un ensamblado dinámico con el nombre, el modo de acceso y los atributos personalizados especificados, y usando el origen indicado para su contexto de seguridad.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, PermissionSet, PermissionSet, PermissionSet)
Obsoleto.
Obsoleto.

Define un ensamblado dinámico usando el nombre especificado, el modo de acceso y las solicitudes de permiso.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String)

Define un ensamblado dinámico usando el nombre especificado, el modo de acceso y el directorio de almacenamiento.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Boolean, IEnumerable<CustomAttributeBuilder>)

Define un ensamblado dinámico usando el nombre, el modo de acceso, el directorio de almacenamiento y la opción de sincronización especificados.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence)
Obsoleto.
Obsoleto.

Define un ensamblado dinámico usando el nombre especificado, el modo de acceso, el directorio de almacenamiento y la evidencia.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet)
Obsoleto.
Obsoleto.

Define un ensamblado dinámico usando el nombre especificado, el modo de acceso, el directorio de almacenamiento, la evidencia y las solicitudes de permiso.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet, Boolean)
Obsoleto.
Obsoleto.

Define un ensamblado dinámico usando el nombre especificado, el modo de acceso, el directorio de almacenamiento, la evidencia, las solicitudes de permiso y la opción de sincronización.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet, Boolean, IEnumerable<CustomAttributeBuilder>)
Obsoleto.
Obsoleto.

Define un ensamblado dinámico con el nombre especificado, el modo de acceso, el directorio de almacenamiento, la evidencia, las solicitudes de permiso, la opción de sincronización y los atributos personalizados.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, PermissionSet, PermissionSet, PermissionSet)
Obsoleto.
Obsoleto.

Define un ensamblado dinámico usando el nombre especificado, el modo de acceso, el directorio de almacenamiento y las solicitudes de permiso.

DoCallBack(CrossAppDomainDelegate)

Ejecuta el código en otro dominio de aplicación identificado por el delegado especificado.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
ExecuteAssembly(String)

Ejecuta el ensamblado que contiene el archivo especificado.

ExecuteAssembly(String, Evidence)
Obsoleto.
Obsoleto.

Ejecuta el ensamblado que contiene el archivo especificado, usando la evidencia especificada.

ExecuteAssembly(String, Evidence, String[])
Obsoleto.
Obsoleto.

Ejecuta el ensamblado que contiene el archivo especificado, usando la evidencia y los argumentos especificados.

ExecuteAssembly(String, Evidence, String[], Byte[], AssemblyHashAlgorithm)
Obsoleto.
Obsoleto.

Ejecuta el ensamblado contenido en el archivo especificado, usando la evidencia, los argumentos, el valor hash y el algoritmo hash especificados.

ExecuteAssembly(String, String[])

Ejecuta el ensamblado contenido en el archivo especificado, usando los argumentos especificados.

ExecuteAssembly(String, String[], Byte[], AssemblyHashAlgorithm)
Obsoleto.

Ejecuta el ensamblado contenido en el archivo especificado, usando los argumentos, el valor hash y el algoritmo hash especificados.

ExecuteAssemblyByName(AssemblyName, Evidence, String[])
Obsoleto.
Obsoleto.

Ejecuta el ensamblado a partir de un objeto AssemblyName, usando la evidencia y los argumentos especificados.

ExecuteAssemblyByName(AssemblyName, String[])

Ejecuta el ensamblado a partir de un objeto AssemblyName, usando los argumentos especificados.

ExecuteAssemblyByName(String)

Ejecuta un ensamblado a partir de su nombre para mostrar.

ExecuteAssemblyByName(String, Evidence)
Obsoleto.
Obsoleto.

Ejecuta un ensamblado a partir de su nombre para mostrar, usando la evidencia especificada.

ExecuteAssemblyByName(String, Evidence, String[])
Obsoleto.
Obsoleto.

Ejecuta el ensamblado a partir de su nombre para mostrar, usando la evidencia y argumentos especificados.

ExecuteAssemblyByName(String, String[])

Ejecuta el ensamblado a partir de su nombre para mostrar, usando los argumentos especificados.

GetAssemblies()

Obtiene los ensamblados que se han cargado en el contexto de ejecución de este dominio de aplicación.

GetCurrentThreadId()
Obsoleto.
Obsoleto.
Obsoleto.
Obsoleto.
Obsoleto.

Obtiene el identificador del subproceso actual.

GetData(String)

Obtiene el valor almacenado en el dominio de aplicación actual para el nombre especificado.

GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetLifetimeService()
Obsoleto.

Recupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia.

(Heredado de MarshalByRefObject)
GetType()

Obtiene el tipo de la instancia actual.

GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
InitializeLifetimeService()

Concede al AppDomain una duración infinita, ya que impide que se genere una concesión.

InitializeLifetimeService()
Obsoleto.

Obtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia.

(Heredado de MarshalByRefObject)
IsCompatibilitySwitchSet(String)

Obtiene un valor booleano que acepta valores NULL que indica si se ha establecido algún modificador de compatibilidad y, en ese caso, si se ha establecido el modificador de compatibilidad especificado.

IsDefaultAppDomain()

Devuelve un valor que indica si el dominio de aplicación es el dominio de aplicación predeterminado para el proceso.

IsFinalizingForUnload()

Indica si se está descargando este dominio de aplicación y si Common Language Runtime está finalizando los objetos que contiene.

Load(AssemblyName)

Carga un Assembly a partir de su AssemblyName.

Load(AssemblyName, Evidence)
Obsoleto.
Obsoleto.

Carga un Assembly a partir de su AssemblyName.

Load(Byte[])

Carga el Assembly con una imagen basada en el formato COFF (Common Object File Format) que contiene un Assembly emitido.

Load(Byte[], Byte[])

Carga el Assembly con una imagen basada en el formato COFF (Common Object File Format) que contiene un Assembly emitido. También se cargan los bytes sin formato que representan los símbolos del Assembly.

Load(Byte[], Byte[], Evidence)
Obsoleto.
Obsoleto.

Carga el Assembly con una imagen basada en el formato COFF (Common Object File Format) que contiene un Assembly emitido. También se cargan los bytes sin formato que representan los símbolos del Assembly.

Load(String)

Carga un Assembly a partir de su nombre de presentación.

Load(String, Evidence)
Obsoleto.
Obsoleto.

Carga un Assembly a partir de su nombre de presentación.

MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
MemberwiseClone(Boolean)

Crea una copia superficial del objeto MarshalByRefObject actual.

(Heredado de MarshalByRefObject)
ReflectionOnlyGetAssemblies()

Devuelve los ensamblados que se han cargado en el contexto de solo reflexión del dominio de aplicación.

SetAppDomainPolicy(PolicyLevel)
Obsoleto.
Obsoleto.

Establece el nivel de directiva de seguridad para este dominio de aplicación.

SetCachePath(String)
Obsoleto.
Obsoleto.
Obsoleto.
Obsoleto.

Establece la ruta de acceso al directorio especificado como la ubicación donde se almacenan las instantáneas de los ensamblados.

SetData(String, Object)

Asigna el valor especificado a la propiedad especificada del dominio de aplicación.

SetData(String, Object, IPermission)

Asigna el valor especificado a la propiedad de dominio de aplicación indicada, con un permiso especificado que se exige al llamador cuando se recupera la propiedad.

SetDynamicBase(String)
Obsoleto.
Obsoleto.
Obsoleto.
Obsoleto.

Establece la ruta de acceso al directorio especificado como directorio base de los subdirectorios donde se almacenan los archivos generados de forma dinámica y se obtiene acceso a ellos.

SetPrincipalPolicy(PrincipalPolicy)

Especifica la forma en que los objetos principales y de identidad deben asociarse a un subproceso si éste intenta enlazarse a un principal mientas se ejecuta en este dominio de aplicación.

SetShadowCopyFiles()
Obsoleto.
Obsoleto.
Obsoleto.
Obsoleto.

Activa la creación de instantáneas.

SetShadowCopyPath(String)
Obsoleto.
Obsoleto.
Obsoleto.
Obsoleto.

Establece la ruta de acceso al directorio especificado como la ubicación de las instantáneas de los ensamblados.

SetThreadPrincipal(IPrincipal)

Establece el objeto principal predeterminado que se va a asociar a los subprocesos si éstos intentan enlazarse a un principal mientras se ejecutan en este dominio de aplicación.

ToString()

Obtiene una representación en forma de cadena que incluye el nombre descriptivo del dominio de aplicación y cualquier directiva del contexto.

Unload(AppDomain)
Obsoleto.

Descarga el dominio de aplicación especificado.

Eventos

AssemblyLoad

Se produce cuando se carga un ensamblado.

AssemblyResolve

Se produce cuando la resolución de un ensamblado produce errores.

DomainUnload

Se produce cuando un AppDomain está a punto de descargarse.

FirstChanceException

Ocurre cuando se produce una excepción en código administrado, antes de que el runtime busque un controlador de excepciones en la pila de llamadas del dominio de aplicación.

ProcessExit

Se produce al salir del proceso primario del dominio de aplicación predeterminado.

ReflectionOnlyAssemblyResolve

Aparece cuando se produce un error en la resolución de un ensamblado en el contexto de solo reflexión.

ResourceResolve

Aparece cuando se produce un error en la resolución de un recurso porque éste no es un recurso vinculado válido o incrustado en el ensamblado.

TypeResolve

Se produce cuando la resolución de un tipo produce errores.

UnhandledException

Se produce cuando no se detecta una excepción.

Implementaciones de interfaz explícitas

_AppDomain.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío.

_AppDomain.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera la información de tipo de un objeto, que se puede usar después para obtener la información de tipo de una interfaz.

_AppDomain.GetTypeInfoCount(UInt32)

Recupera el número de interfaces de información de tipo que proporciona un objeto (0 ó 1).

_AppDomain.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Proporciona acceso a las propiedades y los métodos expuestos por un objeto.

Se aplica a

Consulte también