AppDomain Classe

Definição

Representa um domínio de aplicação, que é um ambiente isolado onde as aplicações são executadas. Esta classe não pode ser herdada.

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
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
Public NotInheritable Class AppDomain
Inherits MarshalByRefObject
Public Class AppDomain
Inherits MarshalByRefObject
Public NotInheritable Class AppDomain
Inherits MarshalByRefObject
Implements _AppDomain, IEvidenceFactory
Herança
Atributos
Implementações

Exemplos

Este exemplo mostra como criar um novo AppDomain, instanciar um tipo nesse novo AppDomain, e comunicar com o objeto desse tipo. Além disso, este exemplo mostra como descarregar o AppDomain que causa que o objeto seja recolhido pelo lixo.

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.

Observações

Os domínios de aplicação, representados por AppDomain objetos, ajudam a fornecer isolamento, descarregamento e limites de segurança para a execução de código gerido.

  • Use domínios de aplicação para isolar tarefas que possam derrubar um processo. Se o estado do AppDomain que está a executar uma tarefa se tornar instável, pode AppDomain ser descarregado sem afetar o processo. Isto é importante quando um processo tem de funcionar durante longos períodos sem reiniciar. Também pode usar domínios de aplicação para isolar tarefas que não devem partilhar dados.
  • Se um assembly for carregado no domínio de aplicação predefinido, não pode ser descarregado da memória enquanto o processo está a correr. No entanto, se abrir um segundo domínio de aplicação para carregar e executar o assembly, o assembly é descarregado quando esse domínio de aplicação é descarregado. Use esta técnica para minimizar o conjunto de processos de longa duração que ocasionalmente utilizam DLLs de grande porte.

Note

No .NET Core e .NET 5+, a implementação AppDomain é limitada pelo design e não oferece limites de isolamento, descarga ou segurança. Estas versões têm exatamente um AppDomain. O isolamento e o descarregamento são fornecidos através AssemblyLoadContextde . Os limites de segurança devem ser estabelecidos por limites de processo e técnicas apropriadas de remoto.

Múltiplos domínios de aplicação podem ser executados num único processo; no entanto, não existe uma correlação um-para-um entre domínios de aplicação e threads. Vários threads podem pertencer a um único domínio de aplicação e, embora um determinado thread não esteja confinado a um único domínio de aplicação, em qualquer momento, um thread executa-se num único domínio de aplicação.

Os domínios de aplicação são criados usando o CreateDomain método. AppDomain As instâncias são usadas para carregar e executar assemblies (Assembly). Quando um AppDomain já não está em uso, pode ser descarregado.

A AppDomain classe implementa um conjunto de eventos que permitem às aplicações responder quando um assembly é carregado, quando um domínio de aplicação será descarregado ou quando uma exceção não tratada é lançada.

Para mais informações sobre o uso de domínios de aplicação, consulte Domínios de Aplicação.

Esta classe implementa as MarshalByRefObjectinterfaces , _AppDomain, e IEvidenceFactory .

Nunca deves criar um wrapper remoto para um AppDomain objeto. Ao fazê-lo, pode publicar uma referência remota a esse AppDomain, expondo métodos como CreateInstance o acesso remoto e destruindo efetivamente a segurança do acesso ao código para esse AppDomain. Clientes maliciosos que se liguem ao remoto AppDomain podem aceder a qualquer recurso a que AppDomain eles próprios tenham acesso. Não crie wrappers remotas para qualquer tipo que se MarshalByRefObject estenda e que implemente métodos que possam ser usados por clientes maliciosos para contornar o sistema de segurança.

Atenção

O valor padrão para a AppDomainSetup.DisallowCodeDownload propriedade é false. Esta configuração é insegura para os serviços. Para evitar que os serviços descarreguem código parcialmente confiável, defina esta propriedade para true.

Propriedades

Name Description
ActivationContext

Obtém o contexto de ativação para o domínio de aplicação atual.

ApplicationIdentity

Obtém a identidade da aplicação no domínio da aplicação.

ApplicationTrust

Obtém informações que descrevem permissões concedidas a uma aplicação e se a aplicação tem um nível de confiança que permita a sua execução.

BaseDirectory

Obtém o diretório base que o resolvedor assembly usa para sondar assemblys.

CurrentDomain

Obtém o domínio de aplicação atual para o domínio atual Thread.

DomainManager

Obtém o gestor de domínio fornecido pelo anfitrião quando o domínio da aplicação foi inicializado.

DynamicDirectory

Obtém o diretório que o resolvedor assembly usa para sondar assembleias criadas dinamicamente.

Evidence

Obtém o associado Evidence a este domínio de aplicação.

FriendlyName

Recebe o nome amigável deste domínio de aplicação.

Id

Obtém um inteiro que identifica de forma única o domínio da aplicação dentro do processo.

IsFullyTrusted

Obtém um valor que indica se assemblies carregados no domínio de aplicação atual são executados com total confiança.

IsHomogenous

Obtém um valor que indica se o domínio de aplicação atual tem um conjunto de permissões concedido a todos os assemblies que são carregados no domínio da aplicação.

MonitoringIsEnabled

Recebe ou define um valor que indica se a monitorização da CPU e memória dos domínios de aplicação está ativada para o processo atual. Uma vez ativada a monitorização de um processo, não pode ser desativada.

MonitoringSurvivedMemorySize

Obtém o número de bytes que sobreviveram à última coleção e que se sabe que são referenciados pelo domínio de aplicação atual.

MonitoringSurvivedProcessMemorySize

Obtém o total de bytes que sobreviveram da última coleção para todos os domínios de aplicação no processo.

MonitoringTotalAllocatedMemorySize

Obtém o tamanho total, em bytes, de todas as alocações de memória feitas pelo domínio da aplicação desde a sua criação, sem subtrair a memória que foi recolhida.

MonitoringTotalProcessorTime

Obtém o tempo total de processamento que foi usado por todas as threads durante a execução no domínio de aplicação atual, desde o início do processo.

PermissionSet
Obsoleto.

Obtém o conjunto de permissões de um domínio de aplicação sandbox.

RelativeSearchPath

Obtém o caminho por baixo do diretório base onde o resolvedor assembly deve sondar para assemblies privados.

SetupInformation

Obtém a informação de configuração do domínio da aplicação para esta instância.

ShadowCopyFiles

Obtém uma indicação se o domínio da aplicação está configurado para copiar ficheiros em sombra.

Métodos

Name Description
AppendPrivatePath(String)
Obsoleto.
Obsoleto.
Obsoleto.

Adiciona o nome do diretório especificado à lista de caminhos privados.

ApplyPolicy(String)

Devolve o nome de exibição da assembleia após a política ter sido aplicada.

ClearPrivatePath()
Obsoleto.
Obsoleto.
Obsoleto.

Reinicia o caminho que especifica a localização das assembleias privadas para a cadeia vazia ("").

ClearShadowCopyPath()
Obsoleto.
Obsoleto.
Obsoleto.

Reinicia a lista de diretórios que contêm assemblies shadow copies para a string vazia ("").

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

Cria uma nova instância de um tipo de COM especificado. Os parâmetros especificam o nome de um ficheiro que contém um assembly contendo o tipo e o nome do tipo.

CreateComInstanceFrom(String, String)

Cria uma nova instância de um tipo de COM especificado. Os parâmetros especificam o nome de um ficheiro que contém um assembly contendo o tipo e o nome do tipo.

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

Cria um novo domínio de aplicação usando o nome especificado, evidências, informação de configuração do domínio de aplicação, conjunto de permissões padrão e array de assemblies totalmente confiáveis.

CreateDomain(String, Evidence, AppDomainSetup)

Cria um novo domínio de aplicação usando o nome especificado, as evidências e a informação de configuração do domínio de aplicação.

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

Cria um novo domínio de aplicação com o nome próprio, usando evidência, caminho da base de aplicação, caminho de pesquisa relativo e um parâmetro que especifica se uma cópia sombra de um assembly deve ser carregada no domínio da aplicação. Especifica um método de callback que é invocado quando o domínio da aplicação é inicializado, e um array de argumentos de string para passar o método de callback.

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

Cria um novo domínio de aplicação com o nome próprio, usando evidência, caminho da base de aplicação, caminho de pesquisa relativo e um parâmetro que especifica se uma cópia sombra de um assembly deve ser carregada no domínio da aplicação.

CreateDomain(String, Evidence)

Cria um novo domínio de aplicação com o nome dado usando a evidência fornecida.

CreateDomain(String)
Obsoleto.

Cria um novo domínio de aplicação com o nome especificado.

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

Cria uma nova instância do tipo especificado definido na montagem especificada. Os parâmetros especificam um binder, flags de ligação, argumentos do construtor, informação específica da cultura usada para interpretar argumentos, atributos de ativação e autorização para criar o tipo.

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

Cria uma nova instância do tipo especificado definido na montagem especificada. Os parâmetros especificam um binder, flags de ligação, argumentos do construtor, informação específica da cultura usada para interpretar argumentos e atributos opcionais de ativação.

CreateInstance(String, String, Object[])

Cria uma nova instância do tipo especificado definido na montagem especificada. Um parâmetro especifica um array de atributos de ativação.

CreateInstance(String, String)

Cria uma nova instância do tipo especificado definido na montagem especificada.

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

Cria uma nova instância do tipo especificado. Os parâmetros especificam o nome do tipo e como este é encontrado e criado.

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

Cria uma nova instância do tipo especificado definido na montagem especificada, especificando se o caso do nome do tipo é ignorado; os atributos de ligação e o binder que são usados para selecionar o tipo a criar; os argumentos do construtor; a cultura; e os atributos de ativação.

CreateInstanceAndUnwrap(String, String, Object[])

Cria uma nova instância do tipo especificado. Os parâmetros especificam a montagem onde o tipo está definido, o nome do tipo e um array de atributos de ativação.

CreateInstanceAndUnwrap(String, String)

Cria uma nova instância do tipo especificado. Os parâmetros especificam o conjunto onde o tipo está definido e o nome do tipo.

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

Cria uma nova instância do tipo especificado definido no ficheiro assembly especificado.

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

Cria uma nova instância do tipo especificado definido no ficheiro assembly especificado.

CreateInstanceFrom(String, String, Object[])

Cria uma nova instância do tipo especificado definido no ficheiro assembly especificado.

CreateInstanceFrom(String, String)

Cria uma nova instância do tipo especificado definido no ficheiro assembly especificado.

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

Cria uma nova instância do tipo especificado definido no ficheiro assembly especificado.

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

Cria uma nova instância do tipo especificado definido no ficheiro assembly especificado, especificando se o caso do nome do tipo é ignorado; os atributos de ligação e o binder que são usados para selecionar o tipo a criar; os argumentos do construtor; a cultura; e os atributos de ativação.

CreateInstanceFromAndUnwrap(String, String, Object[])

Cria uma nova instância do tipo especificado definido no ficheiro assembly especificado.

CreateInstanceFromAndUnwrap(String, String)

Cria uma nova instância do tipo especificado definido no ficheiro assembly especificado.

CreateObjRef(Type)

Cria um objeto que contém toda a informação relevante necessária para gerar um proxy usado para comunicar com um objeto remoto.

(Herdado de MarshalByRefObject)
DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, Evidence, PermissionSet, PermissionSet, PermissionSet)
Obsoleto.

Define um assembly dinâmico usando o nome especificado, modo de acesso, evidências e pedidos de permissões.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, Evidence)
Obsoleto.

Define um conjunto dinâmico usando o nome especificado, modo de acesso e evidência.

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

Define um assembly dinâmico com o nome especificado, modo de acesso e atributos personalizados, utilizando a fonte especificada para o seu contexto de segurança.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, IEnumerable<CustomAttributeBuilder>)

Define um conjunto dinâmico com o nome especificado, modo de acesso e atributos personalizados.

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

Define um assembly dinâmico usando o nome especificado, modo de acesso e pedidos de permissões.

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

Define um conjunto dinâmico usando o nome especificado, modo de acesso, diretório de armazenamento e opção de sincronização.

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

Define um assembly dinâmico com o nome especificado, modo de acesso, diretório de armazenamento, evidência, pedidos de permissões, opção de sincronização e atributos personalizados.

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

Define um assembly dinâmico usando o nome especificado, modo de acesso, diretório de armazenamento, provas, pedidos de permissões e opção de sincronização.

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

Define um assembly dinâmico usando o nome especificado, modo de acesso, diretório de armazenamento, evidências e pedidos de permissões.

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

Define um assembly dinâmico usando o nome especificado, modo de acesso, diretório de armazenamento e evidência.

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

Define um assembly dinâmico usando o nome especificado, modo de acesso, diretório de armazenamento e pedidos de permissões.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String)

Define um assembly dinâmico usando o nome especificado, modo de acesso e diretório de armazenamento.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess)

Define um conjunto dinâmico com o nome e modo de acesso especificados.

DoCallBack(CrossAppDomainDelegate)

Executa o código noutro domínio de aplicação identificado pelo delegado especificado.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

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

Executa o assembly contido no ficheiro especificado, usando a evidência, argumentos, valor de hash e algoritmo de hash especificados.

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

Executa o assembly contido no ficheiro especificado, usando as evidências e argumentos especificados.

ExecuteAssembly(String, Evidence)
Obsoleto.

Executa a montagem contida no ficheiro especificado, usando a evidência especificada.

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

Executa o assembly contido no ficheiro especificado, usando os argumentos especificados, o valor de hash e o algoritmo de hash.

ExecuteAssembly(String, String[])

Executa o assembly contido no ficheiro especificado, usando os argumentos especificados.

ExecuteAssembly(String)

Executa o assembly contido no ficheiro especificado.

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

Executa a montagem dado um AssemblyName, usando as evidências e argumentos especificados.

ExecuteAssemblyByName(AssemblyName, String[])

Executa a montagem dado um AssemblyName, usando os argumentos especificados.

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

Executa a assembleia com o seu nome de exibição, usando as evidências e argumentos especificados.

ExecuteAssemblyByName(String, Evidence)
Obsoleto.

Executa um conjunto dado o seu nome de exibição, usando a evidência especificada.

ExecuteAssemblyByName(String, String[])

Executa o assembly dado o seu nome de visualização, usando os argumentos especificados.

ExecuteAssemblyByName(String)

Executa um assembly dado o seu nome de visualização.

GetAssemblies()

Obtém os assemblies que foram carregados no contexto de execução deste domínio de aplicação.

GetCurrentThreadId()
Obsoleto.
Obsoleto.
Obsoleto.
Obsoleto.

Obtém o identificador atual da thread.

GetData(String)

Obtém o valor armazenado no domínio de aplicação atual para o nome especificado.

GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetLifetimeService()
Obsoleto.

Recupera o objeto de serviço de tempo de vida atual que controla a política de vida útil neste caso.

(Herdado de MarshalByRefObject)
GetType()

Obtém o tipo da instância atual.

GetType()

Obtém o Type da instância atual.

(Herdado de Object)
InitializeLifetimeService()

Dá-lhe AppDomain uma vida útil infinita ao impedir a criação de um arrendamento.

InitializeLifetimeService()
Obsoleto.

Obtém-se um objeto de serviço vitalício para controlar a apólice vitalícia neste caso.

(Herdado de MarshalByRefObject)
IsCompatibilitySwitchSet(String)

Obtém um valor booleano anulável que indica se existem comutadores de compatibilidade definidos e, em caso afirmativo, se o comutador de compatibilidade especificado está definido.

IsDefaultAppDomain()

Devolve um valor que indica se o domínio de aplicação é o domínio de aplicação predefinido para o processo.

IsFinalizingForUnload()

Indica se este domínio de aplicação está a descarregar, e se os objetos que contém estão a ser finalizados pelo runtime da linguagem comum.

Load(AssemblyName, Evidence)
Obsoleto.

Carrega um Assembly dado o seu AssemblyName.

Load(AssemblyName)

Carrega um Assembly dado o seu AssemblyName.

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

Carrega o Assembly com uma imagem baseada em formato de ficheiro objeto comum (COFF) contendo uma imagem emitida Assembly. Os bytes brutos que representam os símbolos para o Assembly também são carregados.

Load(Byte[], Byte[])

Carrega o Assembly com uma imagem baseada em formato de ficheiro objeto comum (COFF) contendo uma imagem emitida Assembly. Os bytes brutos que representam os símbolos para o Assembly também são carregados.

Load(Byte[])

Carrega o Assembly com uma imagem baseada em formato de ficheiro objeto comum (COFF) contendo uma imagem emitida Assembly.

Load(String, Evidence)
Obsoleto.

Carrega um Assembly dado nome de visualização.

Load(String)

Carrega um Assembly dado nome de visualização.

MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
MemberwiseClone(Boolean)

Cria uma cópia superficial do objeto atual MarshalByRefObject .

(Herdado de MarshalByRefObject)
ReflectionOnlyGetAssemblies()

Devolve os assemblies que foram carregados no contexto apenas de reflexão do domínio de aplicação.

SetAppDomainPolicy(PolicyLevel)
Obsoleto.

Estabelece o nível de política de segurança para este domínio de aplicação.

SetCachePath(String)
Obsoleto.
Obsoleto.
Obsoleto.

Estabelece o caminho do diretório especificado como o local onde as assembleias são copiadas em sombra.

SetData(String, Object, IPermission)

Atribui o valor especificado à propriedade de domínio da aplicação especificada, com uma permissão específica para exigir ao chamador quando a propriedade for recuperada.

SetData(String, Object)

Atribui o valor especificado à propriedade de domínio da aplicação especificada.

SetDynamicBase(String)
Obsoleto.
Obsoleto.
Obsoleto.

Estabelece o caminho de diretório especificado como diretório base para subdiretórios onde os ficheiros gerados dinamicamente são armazenados e acedidos.

SetPrincipalPolicy(PrincipalPolicy)

Especifica como os objetos principal e identidade devem ser anexados a uma thread caso esta tente ligar-se a uma principal durante a execução neste domínio de aplicação.

SetShadowCopyFiles()
Obsoleto.
Obsoleto.
Obsoleto.

Ativa a cópia de sombras.

SetShadowCopyPath(String)
Obsoleto.
Obsoleto.
Obsoleto.

Estabelece o caminho do diretório especificado como a localização dos assemblies a serem copiados em sombra.

SetThreadPrincipal(IPrincipal)

Define o objeto principal por defeito para ser associado aos threads caso estes tentem ligar-se a um principal enquanto executam neste domínio de aplicação.

ToString()

Obtém uma representação de string que inclui o nome amigável do domínio da aplicação e quaisquer políticas de contexto.

Unload(AppDomain)
Obsoleto.

Descarrega o domínio de aplicação especificado.

evento

Name Description
AssemblyLoad

Ocorre quando um conjunto está carregado.

AssemblyResolve

Ocorre quando a resolução de um conjunto falha.

DomainUnload

Ocorre quando um AppDomain está prestes a ser descarregado.

FirstChanceException

Ocorre quando uma exceção é inserida em código gerido, antes de o runtime pesquisar na pilha de chamadas um gestor de exceções no domínio da aplicação.

ProcessExit

Ocorre quando o processo pai do domínio de aplicação predefinido sai.

ReflectionOnlyAssemblyResolve

Ocorre quando a resolução de um conjunto falha no contexto apenas de reflexão.

ResourceResolve

Ocorre quando a resolução de um recurso falha porque o recurso não é um recurso válido ligado ou embutido na assembleia.

TypeResolve

Ocorre quando a resolução de um tipo falha.

UnhandledException

Ocorre quando uma exceção não é detetada.

Implementações de Interface Explícita

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

Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de despacho.

_AppDomain.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera as informações de tipo de um objeto, que podem ser usadas para obter as informações de tipo para uma interface.

_AppDomain.GetTypeInfoCount(UInt32)

Recupera o número de interfaces de informações de tipo que um objeto fornece (0 ou 1).

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

Proporciona acesso a propriedades e métodos expostos por um objeto.

Aplica-se a

Ver também