Condividi tramite


AppDomain Classe

Definizione

Rappresenta un dominio applicazione, ossia un ambiente isolato nel quale vengono eseguite le applicazioni. La classe non può essere ereditata.

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
Ereditarietà
Attributi
Implementazioni

Esempio

In questo esempio viene illustrato come creare una nuova istanza di un tipo in tale nuovo AppDomainAppDomainoggetto e comunicare con l'oggetto del tipo. In questo esempio viene inoltre illustrato come scaricare l'oggetto che causa la garbage collection dell'oggetto AppDomain .

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.

Commenti

I domini dell'applicazione, rappresentati da AppDomain oggetti, consentono di fornire isolamento, scaricamento e limiti di sicurezza per l'esecuzione di codice gestito.

  • Usare i domini dell'applicazione per isolare le attività che potrebbero ridurre un processo. Se lo stato dell'esecuzione di AppDomain un'attività diventa instabile, l'oggetto AppDomain può essere scaricato senza influire sul processo. Questo è importante quando un processo deve essere eseguito per periodi lunghi senza riavviare. È anche possibile usare i domini dell'applicazione per isolare le attività che non devono condividere i dati.

  • Se un assembly viene caricato nel dominio dell'applicazione predefinito, non può essere scaricato dalla memoria durante l'esecuzione del processo. Tuttavia, se si apre un secondo dominio applicazione per caricare ed eseguire l'assembly, l'assembly viene scaricato quando tale dominio applicazione viene scaricato. Usare questa tecnica per ridurre al minimo il set di processi a esecuzione prolungata che usano occasionalmente DLL di grandi dimensioni.

Nota

In .NET Core l'implementazione AppDomain è limitata dalla progettazione e non fornisce isolamento, scaricamento o limiti di sicurezza. Per .NET Core, esiste esattamente uno AppDomain. L'isolamento e lo scarico vengono forniti tramite AssemblyLoadContext. I limiti di sicurezza devono essere forniti dai limiti di processo e dalle tecniche di comunicazione remota appropriate.

Più domini applicazione possono essere eseguiti in un singolo processo; Tuttavia, non esiste una correlazione uno-a-uno tra domini applicazione e thread. Diversi thread possono appartenere a un singolo dominio applicazione e, mentre un determinato thread non è limitato a un singolo dominio applicazione, in qualsiasi momento, un thread viene eseguito in un singolo dominio applicazione.

I domini applicazione vengono creati usando il CreateDomain metodo . AppDomain le istanze vengono usate per caricare ed eseguire assembly (Assembly). Quando un AppDomain oggetto non è più in uso, può essere scaricato.

La AppDomain classe implementa un set di eventi che consentono alle applicazioni di rispondere quando viene caricato un assembly, quando un dominio dell'applicazione verrà scaricato o quando viene generata un'eccezione non gestita.

Per altre informazioni sull'uso dei domini applicazione, vedere Domini applicazione.

Questa classe implementa le MarshalByRefObjectinterfacce , _AppDomaine IEvidenceFactory .

Non è mai necessario creare un wrapper remotabile per un AppDomain oggetto. In questo modo potrebbe pubblicare un riferimento remoto a tale AppDomain, esponendo metodi come CreateInstance l'accesso remoto e distruggendo in modo efficace la sicurezza di accesso al codice per tale AppDomain. I client malintenzionati che si connettono al remoto AppDomain potrebbero ottenere l'accesso a qualsiasi risorsa AppDomain a cui ha accesso. Non creare wrapper remotibili per qualsiasi tipo esteso MarshalByRefObject e che implementa metodi che potrebbero essere usati dai client dannosi per ignorare il sistema di sicurezza.

Attenzione

Il valore predefinito per la AppDomainSetup.DisallowCodeDownload proprietà è false. Questa impostazione non è sicura per i servizi. Per impedire ai servizi di scaricare codice parzialmente attendibile, impostare questa proprietà su true.

Proprietà

ActivationContext

Ottiene il contesto di attivazione del dominio applicazione corrente.

ApplicationIdentity

Ottiene l'identità dell'applicazione nel dominio applicazione.

ApplicationTrust

Ottiene informazioni che descrivono le autorizzazioni concesse a un'applicazione e che consentono di stabilire se all'applicazione è associato un livello di attendibilità che ne consente l'esecuzione.

BaseDirectory

Ottiene la directory di base usata dal resolver dell'assembly per verificare la presenza di assembly.

CurrentDomain

Ottiene il dominio applicazione corrente per l'oggetto Thread corrente.

DomainManager

Ottiene il gestore di dominio fornito dall'host al momento dell'inizializzazione del dominio applicazione.

DynamicDirectory

Ottiene la directory usata dal resolver dell'assembly per verificare la presenza di assembly creati dinamicamente.

Evidence

Ottiene l'oggetto Evidence associato al dominio applicazione.

FriendlyName

Ottiene il nome descrittivo del dominio applicazione.

Id

Ottiene un intero che identifica in modo univoco il dominio applicazione all'interno del processo.

IsFullyTrusted

Ottiene un valore che indica se gli assembly caricati nel dominio applicazione corrente vengono eseguiti con attendibilità totale.

IsHomogenous

Ottiene un valore che indica se il dominio applicazione corrente dispone di un set di autorizzazioni concesso a tutti gli assembly caricati nel dominio applicazione.

MonitoringIsEnabled

Ottiene o imposta un valore che indica se il monitoraggio della memoria e della CPU dei domini applicazione è abilitato per il processo corrente. Una volta abilitato per un processo, il monitoraggio non può più essere disabilitato.

MonitoringSurvivedMemorySize

Ottiene il numero di byte esclusi dall'ultima raccolta e a cui fa riferimento il dominio applicazione corrente.

MonitoringSurvivedProcessMemorySize

Ottiene i byte totali esclusi dall'ultima raccolta per tutti i domini applicazione nel processo.

MonitoringTotalAllocatedMemorySize

Ottiene le dimensioni totali, in byte, di tutte le allocazioni di memoria effettuate dal dominio applicazione da quando è stato creato, senza sottrarre la memoria che è stata raccolta.

MonitoringTotalProcessorTime

Ottiene il tempo del processore totale usato da tutti i thread durante l'esecuzione nel dominio applicazione corrente, da quando il processo è stato avviato.

PermissionSet
Obsoleta.

Ottiene il set di autorizzazioni di un dominio applicazione creato mediante sandbox.

RelativeSearchPath

Ottiene il percorso nella directory di base in cui deve essere verificata la presenza di assembly privati mediante il resolver dell'assembly.

SetupInformation

Ottiene le informazioni sulla configurazione del dominio applicazione per l'istanza.

ShadowCopyFiles

Indica se il dominio applicazione è configurato per eseguire la copia shadow di file.

Metodi

AppendPrivatePath(String)
Obsoleta.
Obsoleta.
Obsoleta.
Obsoleta.

Aggiunge il nome di directory specificato all'elenco di percorsi privati.

ApplyPolicy(String)

Restituisce il nome visualizzato dell'assembly dopo l'applicazione dei criteri.

ClearPrivatePath()
Obsoleta.
Obsoleta.
Obsoleta.
Obsoleta.

Reimposta su stringa vuota ("") il percorso che specifica la posizione degli assembly privati.

ClearShadowCopyPath()
Obsoleta.
Obsoleta.
Obsoleta.
Obsoleta.

Reimposta su stringa vuota ("") l'elenco di directory contenenti assembly replicati mediante copia shadow.

CreateComInstanceFrom(String, String)

Crea una nuova istanza di un tipo COM specificato. I parametri specificano il nome di un file contenente un assembly che, a sua volta, contiene il tipo e il nome del tipo.

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

Crea una nuova istanza di un tipo COM specificato. I parametri specificano il nome di un file contenente un assembly che, a sua volta, contiene il tipo e il nome del tipo.

CreateDomain(String)
Obsoleta.

Crea un nuovo dominio applicazione con il nome specificato.

CreateDomain(String, Evidence)

Crea un nuovo dominio applicazione con il nome specificato usando l'evidenza fornita.

CreateDomain(String, Evidence, AppDomainSetup)

Crea un nuovo dominio applicazione usando il nome, l'evidenza e le informazioni di installazione del dominio applicazione specificati.

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

Crea un nuovo dominio applicazione usando il nome, l'evidenza, le informazioni di impostazione del dominio applicazione, il set di autorizzazioni predefinito e la matrice di assembly completamente attendibili specificati.

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

Crea un nuovo dominio applicazione con il nome indicato mediante un'evidenza, un percorso base dell'applicazione, un percorso di ricerca relativo e un parametro che specifica se nel dominio applicazione deve essere caricata la copia shadow di un assembly.

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

Crea un nuovo dominio applicazione con il nome indicato mediante un'evidenza, un percorso base dell'applicazione, un percorso di ricerca relativo e un parametro che specifica se nel dominio applicazione deve essere caricata la copia shadow di un assembly. Specifica un metodo di callback che viene richiamato quando viene inizializzato il dominio applicazione e indica una matrice di argomenti stringa da passare al metodo di callback.

CreateInstance(String, String)

Crea una nuova istanza del tipo specificato definito nell'assembly specificato.

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

Crea una nuova istanza del tipo specificato definito nell'assembly specificato. I parametri specificano uno strumento di associazione, i flag di associazione, gli argomenti del costruttore, le informazioni specifiche delle impostazioni cultura usate per interpretare gli argomenti e gli attributi di attivazione facoltativi.

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

Crea una nuova istanza del tipo specificato definito nell'assembly specificato. I parametri specificano lo strumento di associazione, i flag di associazione, gli argomenti del costruttore, le informazioni specifiche delle impostazioni cultura usate per interpretare gli argomenti, gli attributi di attivazione e l'autorizzazione per la creazione del tipo.

CreateInstance(String, String, Object[])

Crea una nuova istanza del tipo specificato definito nell'assembly specificato. Un parametro specifica una matrice di attributi di attivazione.

CreateInstanceAndUnwrap(String, String)

Crea una nuova istanza del tipo specificato. I parametri specificano l'assembly in cui è definito il tipo e il nome del tipo.

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

Crea una nuova istanza del tipo specificato definito nell'assembly specificato, indicando se ignorare le maiuscole/minuscole del nome del tipo, gli attributi e lo strumento di associazione usati per selezionare il tipo da creare, gli argomenti del costruttore, le impostazioni cultura e gli attributi di attivazione.

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

Crea una nuova istanza del tipo specificato. I parametri specificano il nome del tipo e le relative modalità di individuazione e creazione.

CreateInstanceAndUnwrap(String, String, Object[])

Crea una nuova istanza del tipo specificato. I parametri specificano l'assembly in cui è definito il tipo, il nome del tipo e una matrice di attributi di attivazione.

CreateInstanceFrom(String, String)

Crea una nuova istanza del tipo specificato definito nel file di assembly specificato.

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

Crea una nuova istanza del tipo specificato definito nel file di assembly specificato.

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

Crea una nuova istanza del tipo specificato definito nel file di assembly specificato.

CreateInstanceFrom(String, String, Object[])

Crea una nuova istanza del tipo specificato definito nel file di assembly specificato.

CreateInstanceFromAndUnwrap(String, String)

Crea una nuova istanza del tipo specificato definito nel file di assembly specificato.

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

Crea una nuova istanza del tipo specificato definito nel file di assembly specificato, indicando se ignorare le maiuscole/minuscole del nome del tipo, gli attributi e lo strumento di associazione usati per selezionare il tipo da creare, gli argomenti del costruttore, le impostazioni cultura e gli attributi di attivazione.

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

Crea una nuova istanza del tipo specificato definito nel file di assembly specificato.

CreateInstanceFromAndUnwrap(String, String, Object[])

Crea una nuova istanza del tipo specificato definito nel file di assembly specificato.

CreateObjRef(Type)

Consente di creare un oggetto che contiene tutte le informazioni rilevanti necessarie per la generazione del proxy utilizzato per effettuare la comunicazione con un oggetto remoto.

(Ereditato da MarshalByRefObject)
DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess)

Definisce un assembly dinamico con nome e modalità di accesso specificati.

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

Definisce un assembly dinamico tramite il nome, la modalità di accesso e l'evidenza specificati.

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

Definisce un assembly dinamico usando il nome, la modalità di accesso, l'evidenza e le richieste di autorizzazione specificati.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, IEnumerable<CustomAttributeBuilder>)

Definisce un assembly dinamico con il nome, la modalità di accesso e gli attributi personalizzati specificati.

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

Definisce un assembly dinamico con il nome, la modalità di accesso e gli attributi personalizzati specificati e usando il database di origine specificato per il contesto di sicurezza.

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

Definisce un assembly dinamico usando il nome, la modalità di accesso e le richieste di autorizzazione specificati.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String)

Definisce un assembly dinamico usando il nome, la modalità di accesso e la directory di archiviazione specificati.

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

Definisce un assembly dinamico usando il nome, la modalità di accesso, la directory di archiviazione e l'opzione di sincronizzazione specificati.

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

Definisce un assembly dinamico mediante il nome, la modalità di accesso, la directory di archiviazione e l'evidenza specificati.

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

Definisce un assembly dinamico usando il nome, la modalità di accesso, la directory di archiviazione, l'evidenza e le richieste di autorizzazione specificati.

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

Definisce un assembly dinamico usando il nome, la modalità di accesso, la directory di archiviazione, l'evidenza, le richieste di autorizzazione e l'opzione di sincronizzazione specificati.

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

Definisce un assembly dinamico con il nome, la modalità di accesso, la directory di archiviazione, l'evidenza, le richieste di autorizzazione, l'opzione di sincronizzazione e gli attributi personalizzati specificati.

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

Definisce un assembly dinamico usando il nome, la modalità di accesso, la directory di archiviazione e le richieste di autorizzazione specificati.

DoCallBack(CrossAppDomainDelegate)

Esegue il codice in un altro dominio applicazione, identificato dal delegato specificato.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
ExecuteAssembly(String)

Esegue l'assembly contenuto nel file specificato.

ExecuteAssembly(String, Evidence)
Obsoleta.
Obsoleta.

Esegue l'assembly contenuto nel file specificato usando l'evidenza specificata.

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

Esegue l'assembly contenuto nel file specificato usando l'evidenza e gli argomenti specificati.

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

Esegue l'assembly contenuto nel file specificato, usando l'evidenza, gli argomenti, il valore hash e l'algoritmo hash specificati.

ExecuteAssembly(String, String[])

Esegue l'assembly contenuto nel file specificato, usando gli argomenti specificati.

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

Esegue l'assembly contenuto nel file specificato, usando gli argomenti, il valore hash e l'algoritmo hash specificati.

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

Esegue l'assembly in base a un dato oggetto AssemblyName, usando l'evidenza e gli argomenti specificati.

ExecuteAssemblyByName(AssemblyName, String[])

Esegue l'assembly in base a un oggetto AssemblyName, usando gli argomenti specificati.

ExecuteAssemblyByName(String)

Esegue un assembly in base al nome visualizzato.

ExecuteAssemblyByName(String, Evidence)
Obsoleta.
Obsoleta.

Esegue un assembly in base al nome visualizzato, usando l'evidenza specificata.

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

Esegue l'assembly in base al nome visualizzato, usando l'evidenza e gli argomenti specificati.

ExecuteAssemblyByName(String, String[])

Esegue l'assembly in base al nome visualizzato, usando gli argomenti specificati.

GetAssemblies()

Ottiene gli assembly caricati nel contesto di esecuzione del dominio applicazione.

GetCurrentThreadId()
Obsoleta.
Obsoleta.
Obsoleta.
Obsoleta.
Obsoleta.

Ottiene l'identificatore del thread attuale.

GetData(String)

Ottiene il valore archiviato nel dominio applicazione attuale per il nome specificato.

GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetLifetimeService()
Obsoleta.

Consente di recuperare l'oggetto servizio di durata corrente per controllare i criteri di durata per l'istanza.

(Ereditato da MarshalByRefObject)
GetType()

Ottiene il tipo dell'istanza corrente.

GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
InitializeLifetimeService()

Fornisce all'oggetto AppDomain una durata infinita impedendo la creazione di lease.

InitializeLifetimeService()
Obsoleta.

Ottiene un oggetto servizio di durata per controllare i criteri di durata per questa istanza.

(Ereditato da MarshalByRefObject)
IsCompatibilitySwitchSet(String)

Ottiene un valore booleano che ammette valori Null, indica se sono impostate opzioni di compatibilità e, in tal caso, se è impostata l'opzione di compatibilità specificata.

IsDefaultAppDomain()

Restituisce un valore che indica se il dominio applicazione è quello predefinito per il processo.

IsFinalizingForUnload()

Indica se è in corso lo scaricamento del dominio applicazione e se il completamento degli oggetti in esso contenuti è stato avviato in Common Language Runtime.

Load(AssemblyName)

Carica Assembly, dato il relativo AssemblyName.

Load(AssemblyName, Evidence)
Obsoleta.
Obsoleta.

Carica Assembly, dato il relativo AssemblyName.

Load(Byte[])

Carica l'oggetto Assembly con un'immagine in formato COFF (Common Object File Format) contenente un oggetto Assembly generato.

Load(Byte[], Byte[])

Carica l'oggetto Assembly con un'immagine in formato COFF (Common Object File Format) contenente un oggetto Assembly generato. Vengono caricati anche i byte non elaborati che rappresentano i simboli per l'oggetto Assembly.

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

Carica l'oggetto Assembly con un'immagine in formato COFF (Common Object File Format) contenente un oggetto Assembly generato. Vengono caricati anche i byte non elaborati che rappresentano i simboli per l'oggetto Assembly.

Load(String)

Carica Assembly, dato il nome visualizzato.

Load(String, Evidence)
Obsoleta.
Obsoleta.

Carica Assembly, dato il nome visualizzato.

MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
MemberwiseClone(Boolean)

Crea una copia dei riferimenti dell'oggetto MarshalByRefObject corrente.

(Ereditato da MarshalByRefObject)
ReflectionOnlyGetAssemblies()

Restituisce gli assembly caricati nel contesto ReflectionOnly del dominio applicazione.

SetAppDomainPolicy(PolicyLevel)
Obsoleta.
Obsoleta.

Imposta il livello dei criteri di sicurezza per il dominio applicazione.

SetCachePath(String)
Obsoleta.
Obsoleta.
Obsoleta.
Obsoleta.

Imposta il percorso di directory specificato come percorso in cui vengono replicati gli assembly mediante copia shadow.

SetData(String, Object)

Assegna il valore specificato alla proprietà specificata del dominio applicazione.

SetData(String, Object, IPermission)

Assegna il valore specificato alla proprietà del dominio applicazione indicata, con una determinata autorizzazione di richiesta del chiamante quando viene recuperata la proprietà.

SetDynamicBase(String)
Obsoleta.
Obsoleta.
Obsoleta.
Obsoleta.

Imposta il percorso di directory specificato come directory di base per sottodirectory in cui vengono archiviati i file generati dinamicamente e tramite cui si accede a questi ultimi.

SetPrincipalPolicy(PrincipalPolicy)

Specifica come collegare oggetti Principal e Identity a un thread se si tenta di associare il thread a un Principal durante l'esecuzione nel dominio applicazione.

SetShadowCopyFiles()
Obsoleta.
Obsoleta.
Obsoleta.
Obsoleta.

Attiva la replica tramite copia shadow.

SetShadowCopyPath(String)
Obsoleta.
Obsoleta.
Obsoleta.
Obsoleta.

Imposta il percorso di directory specificato come percorso degli assembly da replicare mediante copia shadow.

SetThreadPrincipal(IPrincipal)

Imposta l'oggetto Principal predefinito da collegare ai thread se si prova ad associare questi ultimi a un oggetto Principal durante l'esecuzione nel dominio applicazione.

ToString()

Ottiene una rappresentazione di stringa che comprende il nome descrittivo del dominio applicazione e qualsiasi criterio di contesto.

Unload(AppDomain)
Obsoleta.

Scarica il dominio applicazione corrente.

Eventi

AssemblyLoad

Si verifica al caricamento di un assembly.

AssemblyResolve

Si verifica quando la risoluzione di un assembly ha esito negativo.

DomainUnload

Si verifica quando un oggetto AppDomain sta per essere scaricato.

FirstChanceException

Si verifica quando un'eccezione viene generata in codice gestito prima che il runtime cerchi un gestore di eccezioni nello stack di chiamate del dominio applicazione.

ProcessExit

Si verifica alla chiusura del processo padre del dominio applicazione predefinito.

ReflectionOnlyAssemblyResolve

Si verifica quando la risoluzione di un assembly ha esito negativo nel contesto ReflectionOnly.

ResourceResolve

Si verifica quando la risoluzione di una risorsa ha esito negativo in quanto la risorsa stessa non è una risorsa collegata valida o non è incorporata nell'assembly.

TypeResolve

Si verifica quando la risoluzione di un tipo non riesce.

UnhandledException

Si verifica quando non viene intercettata un'eccezione.

Implementazioni dell'interfaccia esplicita

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

Esegue il mapping di un set di nomi a un set corrispondente di ID dispatch.

_AppDomain.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera le informazioni sul tipo relative a un oggetto che può quindi essere usato per ottenere informazioni sul tipo relative a un'interfaccia.

_AppDomain.GetTypeInfoCount(UInt32)

Recupera il numero delle interfacce di informazioni sul tipo fornite da un oggetto (0 o 1).

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

Fornisce l'accesso a proprietà e metodi esposti da un oggetto.

Si applica a

Vedi anche