Freigeben über


AppDomain Klasse

Definition

Stellt eine Anwendungsdomäne dar. Dies ist eine isolierte Umgebung, in der Programme ausgeführt werden. Diese Klasse kann nicht vererbt werden.

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
Vererbung
Attribute
Implementiert

Beispiele

In diesem Beispiel wird gezeigt, wie Sie einen neuen , Instanziierungstyp in diesem neuen AppDomainAppDomainTyp erstellen und mit dem Objekt dieses Typs kommunizieren. Darüber hinaus zeigt dieses Beispiel, wie sie das Zuladen des AppDomain Objekts aufheben, das zum Sammeln von Müll gesammelt werden soll.

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.

Hinweise

Anwendungsdomänen, die durch AppDomain Objekte dargestellt werden, helfen bei der Bereitstellung von Isolation, Entladung und Sicherheitsgrenzen für die Ausführung verwalteten Codes.

  • Verwenden Sie Anwendungsdomänen, um Aufgaben zu isolieren, die möglicherweise einen Prozess herunterbringen. Wenn der Zustand der AppDomain Ausführung einer Aufgabe instabil wird, kann der AppDomain Vorgang ohne Auswirkungen auf den Prozess ungeladen werden. Dies ist wichtig, wenn ein Prozess für lange Zeiträume ohne Neustart ausgeführt werden muss. Sie können auch Anwendungsdomänen verwenden, um Aufgaben zu isolieren, die keine Daten freigeben sollten.

  • Wenn eine Assembly in die Standardanwendungsdomäne geladen wird, kann es während der Ausführung des Prozesses nicht aus dem Arbeitsspeicher entfernt werden. Wenn Sie jedoch eine zweite Anwendungsdomäne öffnen, um die Assembly zu laden und auszuführen, wird die Assembly nicht geladen, wenn diese Anwendungsdomäne geladen wird. Verwenden Sie diese Technik, um die Arbeitsmenge von lang ausgeführten Prozessen zu minimieren, die gelegentlich große DLLs verwenden.

Hinweis

Bei .NET Core ist die AppDomain Implementierung von Design begrenzt und stellt keine Isolation, Entladung oder Sicherheitsgrenzen bereit. Für .NET Core gibt es genau eine AppDomain. Isolation und Entladung werden durch AssemblyLoadContextbereitgestellt. Sicherheitsgrenzen sollten durch Prozessgrenzen und geeignete Remotingtechniken bereitgestellt werden.

Mehrere Anwendungsdomänen können in einem einzigen Prozess ausgeführt werden; Es gibt jedoch keine 1-1-Korrelation zwischen Anwendungsdomänen und Threads. Mehrere Threads können zu einer einzelnen Anwendungsdomäne gehören, und während ein bestimmtes Thread nicht auf eine einzelne Anwendungsdomäne beschränkt ist, wird ein Thread jederzeit in einer einzigen Anwendungsdomäne ausgeführt.

Anwendungsdomänen werden mithilfe der CreateDomain Methode erstellt. AppDomain Instanzen werden zum Laden und Ausführen von Assemblys (Assembly) verwendet. Wenn ein AppDomain Benutzer nicht mehr verwendet wird, kann er nicht mehr geladen werden.

Die AppDomain Klasse implementiert eine Reihe von Ereignissen, die es Anwendungen ermöglichen, zu reagieren, wenn eine Assembly geladen wird, wenn eine Anwendungsdomäne geladen wird oder wenn eine nicht behandelte Ausnahme ausgelöst wird.

Weitere Informationen zur Verwendung von Anwendungsdomänen finden Sie unter Anwendungsdomänen.

Diese Klasse implementiert die MarshalByRefObject, _AppDomainund IEvidenceFactory Schnittstellen.

Sie sollten niemals einen Remotable-Wrapper für ein AppDomain Objekt erstellen. Dies könnte einen Remoteverweis dazu AppDomainveröffentlichen, indem Methoden wie CreateInstance Remotezugriff und effektive Zerstörung der Codezugriffssicherheit für dies AppDomainangezeigt werden. Böswillige AppDomain Clients, die mit der Remoteverbindung verbunden sind, können Zugriff auf jede Ressource AppDomain erhalten, auf die sich selbst Zugriff hat. Erstellen Sie keine Remotable-Wrapper für jeden Typ, der erweitert MarshalByRefObject wird und Methoden implementiert, die von böswilligen Clients verwendet werden können, um das Sicherheitssystem zu umgehen.

Achtung

Der Standardwert für die AppDomainSetup.DisallowCodeDownload Eigenschaft ist false. Diese Einstellung ist für Dienste nicht sicher. Um zu verhindern, dass Dienste teilweise vertrauenswürdigen Code herunterladen, legen Sie diese Eigenschaft auf true.

Eigenschaften

ActivationContext

Ruft den Aktivierungskontext für die aktuelle Anwendungsdomäne ab.

ApplicationIdentity

Ruft die Identität der Anwendung in der Anwendungsdomäne ab.

ApplicationTrust

Ruft Informationen ab, die die einer Anwendung gewährten Berechtigungen beschreiben und ob die Anwendung eine Vertrauensebene besitzt, die eine Ausführung zulässt.

BaseDirectory

Ruft das Basisverzeichnis ab, das der Assemblyresolver für die Suche nach Assemblys verwendet.

CurrentDomain

Ruft die aktuelle Anwendungsdomäne für den aktuellen Thread ab.

DomainManager

Ruft den Domänen-Manager ab, der beim Initialisieren der Anwendungsdomäne vom Host bereitgestellt wurde.

DynamicDirectory

Ruft das Verzeichnis ab, das der Assemblyresolver für die Suche nach dynamisch erstellten Assemblys verwendet.

Evidence

Ruft den Evidence ab, der dieser Anwendungsdomäne zugeordnet ist.

FriendlyName

Ruft den angezeigten Namen dieser Anwendungsdomäne ab.

Id

Ruft eine Ganzzahl ab, die die Anwendungsdomäne innerhalb des Prozesses eindeutig identifiziert.

IsFullyTrusted

Ruft einen Wert ab, der angibt, ob in die aktuelle Anwendungsdomäne geladene Assemblys mit vollständiger Vertrauenswürdigkeit ausgeführt werden.

IsHomogenous

Ruft einen Wert ab, der angibt, ob die aktuelle Anwendungsdomäne einen Satz von Berechtigungen aufweist, der allen in die Anwendungsdomäne geladenen Assemblys gewährt wird.

MonitoringIsEnabled

Ruft einen Wert ab, der angibt, ob CPU- und Speicherüberwachung von Anwendungsdomänen für den aktuellen Prozess aktiviert ist, oder legt ihn fest. Wenn die Überwachung für einen Prozess aktiviert wurde, kann sie nicht deaktiviert werden.

MonitoringSurvivedMemorySize

Ruft die Anzahl von Bytes ab, die nach der letzten Auflistung noch vorhanden sind und auf die bekanntermaßen von der aktuellen Anwendungsdomäne verwiesen wird.

MonitoringSurvivedProcessMemorySize

Ruft die gesamten Bytes ab, die nach der letzten Auflistung für alle Anwendungsdomänen im Prozess noch vorhanden sind.

MonitoringTotalAllocatedMemorySize

Ruft die Gesamtgröße in Bytes aller Speicherbelegungen ab, die von der Anwendungsdomäne seit der Erstellung vorgenommen wurden, ohne Subtraktion des freigegebenen Speichers.

MonitoringTotalProcessorTime

Ruft die gesamte Prozessorzeit ab, die von allen Threads bei der Ausführung in der aktuellen Anwendungsdomäne seit Prozessstart genutzt wurde.

PermissionSet
Veraltet.

Ruft den Berechtigungssatz einer Sandbox-Anwendungsdomäne ab.

RelativeSearchPath

Ruft den Pfad unterhalb des Basisverzeichnisses ab, in dem der Assemblyresolver nach privaten Assemblys suchen soll.

SetupInformation

Ruft die Konfigurationsinformationen der Anwendungsdomäne für diese Instanz ab.

ShadowCopyFiles

Gibt an, ob die Anwendungsdomäne für das Erstellen von Dateischattenkopien konfiguriert ist.

Methoden

AppendPrivatePath(String)
Veraltet.
Veraltet.
Veraltet.
Veraltet.

Fügt den angegebenen Verzeichnisnamen an die Liste der privaten Pfade an.

ApplyPolicy(String)

Gibt den Assemblyanzeigenamen nach dem Anwenden der Richtlinien zurück.

ClearPrivatePath()
Veraltet.
Veraltet.
Veraltet.
Veraltet.

Setzt den Pfad, der den Speicherort von privaten Assemblys angibt, auf die leere Zeichenfolge ("") zurück.

ClearShadowCopyPath()
Veraltet.
Veraltet.
Veraltet.
Veraltet.

Setzt die Liste der Verzeichnisse mit gespiegelten Assemblys auf die leere Zeichenfolge ("") zurück.

CreateComInstanceFrom(String, String)

Erstellt eine neue Instanz eines angegebenen COM-Typs. Parameter geben den Namen einer Datei mit einer Assembly an, die den Typ und den Typnamen enthält.

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

Erstellt eine neue Instanz eines angegebenen COM-Typs. Parameter geben den Namen einer Datei mit einer Assembly an, die den Typ und den Typnamen enthält.

CreateDomain(String)
Veraltet.

Erstellt eine neue Anwendungsdomäne mit dem angegebenen Namen.

CreateDomain(String, Evidence)

Erstellt eine neue Anwendungsdomäne mit dem angegebenen Namen und den bereitgestellten Beweisen.

CreateDomain(String, Evidence, AppDomainSetup)

Erstellt eine neue Anwendungsdomäne mit dem angegebenen Namen, den angegebenen Beweisen und Anwendungsdomänen-Setupinformationen.

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

Erstellt eine neue Anwendungsdomäne mit angegebenem Namen, Beweis, Anwendungsdomänen-Setupinformationen, Standardberechtigungssatz und Array vollständig vertrauenswürdiger Assemblys.

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

Erstellt eine neue Anwendungsdomäne mit dem angegebenen Namen unter Verwendung der Beweise, des Anwendungsbasispfads, des relativen Suchpfads und eines Parameters, der angibt, ob eine Schattenkopie einer Assembly in die Anwendungsdomäne geladen werden soll.

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

Erstellt eine neue Anwendungsdomäne mit dem angegebenen Namen unter Verwendung der Beweise, des Anwendungsbasispfads, des relativen Suchpfads und eines Parameters, der angibt, ob eine Schattenkopie einer Assembly in die Anwendungsdomäne geladen werden soll. Gibt eine Rückrufmethode an, die beim Initialisieren der Anwendungsdomäne aufgerufen wird, und ein Array von Zeichenfolgenargumenten, die an die Rückrufmethode übergeben werden sollen.

CreateInstance(String, String)

Erstellt eine neue Instanz des angegebenen Typs, der in der angegebenen Assembly definiert ist.

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

Erstellt eine neue Instanz des angegebenen Typs, der in der angegebenen Assembly definiert ist. Parameter geben einen Binder, Bindungsflags, Konstruktorargumente, kulturspezifische Informationen zum Interpretieren von Argumenten und optionale Aktivierungsattribute an.

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

Erstellt eine neue Instanz des angegebenen Typs, der in der angegebenen Assembly definiert ist. Parameter geben einen Binder, Bindungsflags, Konstruktorargumente, kulturspezifische Informationen zum Interpretieren von Argumenten, Aktivierungsattribute und die Autorisierung zum Erstellen des Typs an.

CreateInstance(String, String, Object[])

Erstellt eine neue Instanz des angegebenen Typs, der in der angegebenen Assembly definiert ist. Ein Parameter gibt ein Array von Aktivierungsattributen an.

CreateInstanceAndUnwrap(String, String)

Erstellt eine neue Instanz des angegebenen Typs. Parameter geben die Assembly, in der der Typ definiert ist, und den Namen des Typs an.

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

Erstellt eine neue Instanz des angegebenen, in der angegebenen Assembly definierten Typs, die angibt, ob die Groß-/Kleinschreibung des Typnamens ignoriert wird, außerdem die Bindungsattribute und den Binder, mit denen der zu erstellende Typ ausgewählt wird, die Argumente des Konstruktors, die Kultur und die Aktivierungsattribute.

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

Erstellt eine neue Instanz des angegebenen Typs. Parameter geben den Namen des Typs an und wie er gesucht und erstellt werden kann.

CreateInstanceAndUnwrap(String, String, Object[])

Erstellt eine neue Instanz des angegebenen Typs. Parameter geben die Assembly an, in der der Typ definiert ist, und den Namen des Typs und ein Array von Aktivierungsattributen.

CreateInstanceFrom(String, String)

Erstellt eine neue Instanz des angegebenen Typs, der in der angegebenen Assemblydatei definiert ist.

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

Erstellt eine neue Instanz des angegebenen Typs, der in der angegebenen Assemblydatei definiert ist.

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

Erstellt eine neue Instanz des angegebenen Typs, der in der angegebenen Assemblydatei definiert ist.

CreateInstanceFrom(String, String, Object[])

Erstellt eine neue Instanz des angegebenen Typs, der in der angegebenen Assemblydatei definiert ist.

CreateInstanceFromAndUnwrap(String, String)

Erstellt eine neue Instanz des angegebenen Typs, der in der angegebenen Assemblydatei definiert ist.

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

Erstellt eine neue Instanz des angegebenen, in der angegebenen Assemblydatei definierten Typs, die angibt, ob die Groß-/Kleinschreibung des Typnamens ignoriert wird, außerdem die Bindungsattribute und den Binder, mit denen der zu erstellende Typ ausgewählt wird, die Argumente des Konstruktors, die Kultur und die Aktivierungsattribute.

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

Erstellt eine neue Instanz des angegebenen Typs, der in der angegebenen Assemblydatei definiert ist.

CreateInstanceFromAndUnwrap(String, String, Object[])

Erstellt eine neue Instanz des angegebenen Typs, der in der angegebenen Assemblydatei definiert ist.

CreateObjRef(Type)

Erstellt ein Objekt mit allen relevanten Informationen, die zum Generieren eines Proxys für die Kommunikation mit einem Remoteobjekt erforderlich sind.

(Geerbt von MarshalByRefObject)
DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess)

Definiert eine dynamische Assembly mit dem angegebenen Namen und Zugriffsmodus.

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

Definiert eine dynamische Assembly mit dem angegebenen Namen, Zugriffsmodus und Beweis.

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

Definiert eine dynamische Assembly mit dem angegebenen Namen, Zugriffsmodus, Beweis und den angegebenen Berechtigungsanforderungen.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, IEnumerable<CustomAttributeBuilder>)

Definiert eine dynamische Assembly mit dem angegebenen Namen, Zugriffsmodus und benutzerdefinierten Attributen.

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

Definiert eine dynamische Assembly mit dem angegebenen Namen, Zugriffsmodus und benutzerdefinierten Attributen und verwendet die angegebene Quelle für den Sicherheitskontext.

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

Definiert eine dynamische Assembly mit dem angegebenem Namen, Zugriffsmodus und den angegebenen Berechtigungsanforderungen.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String)

Definiert eine dynamische Assembly mit dem angegebenen Namen, Zugriffsmodus und Speicherverzeichnis.

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

Definiert eine dynamische Assembly mit dem angegebenen Namen, Zugriffsmodus, Speicherverzeichnis und der Synchronisierungsoption.

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

Definiert eine dynamische Assembly mit dem angegebenen Namen, Zugriffsmodus, Speicherverzeichnis und Beweis.

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

Definiert eine dynamische Assembly mit dem angegebenen Namen, Zugriffsmodus, Speicherverzeichnis, Beweis und den angegebenen Berechtigungsanforderungen.

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

Definiert eine dynamische Assembly mit dem angegebenen Namen, Zugriffsmodus, Speicherverzeichnis, Beweis sowie der angegebenen Synchronisierungsoption und den angegebenen Berechtigungsanforderungen.

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

Definiert eine dynamische Assembly mit dem angegebenen Namen, Zugriffsmodus, Speicherverzeichnis, Beweis sowie der angegebenen Synchronisierungsoption und den angegebenen Berechtigungsanforderungen und benutzerdefinierten Attributen.

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

Definiert eine dynamische Assembly mit dem angegebenen Namen, Zugriffsmodus, Speicherverzeichnis und den angegebenen Berechtigungsanforderungen.

DoCallBack(CrossAppDomainDelegate)

Führt den Code in einer anderen Anwendungsdomäne aus, die durch den angegebenen Delegaten bezeichnet wird.

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
ExecuteAssembly(String)

Führt die Assembly in der angegebenen Datei aus.

ExecuteAssembly(String, Evidence)
Veraltet.
Veraltet.

Führt die Assembly in der angegebenen Datei unter Verwendung der angegebenen Beweise aus.

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

Führt die Assembly in der angegebenen Datei unter Verwendung der angegebenen Beweise und Argumente aus.

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

Führt die Assembly in der angegebenen Datei unter Verwendung der angegebenen Beweise, Argumente, des Hashwerts und Hashalgorithmus aus.

ExecuteAssembly(String, String[])

Führt die Assembly in der angegebenen Datei unter Verwendung der angegebenen Argumente aus.

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

Führt die Assembly in der angegebenen Datei unter Verwendung der angegebenen Argumente, des Hashwerts und Hashalgorithmus aus.

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

Führt bei Angabe eines AssemblyName die Assembly mit dem angegebenen Beweis und den angegebenen Argumenten aus.

ExecuteAssemblyByName(AssemblyName, String[])

Führt bei Angabe eines AssemblyName die Assembly mit den angegebenen Argumenten aus.

ExecuteAssemblyByName(String)

Führt eine Assembly unter Angabe ihres Anzeigenamens aus.

ExecuteAssemblyByName(String, Evidence)
Veraltet.
Veraltet.

Führt eine Assembly unter Angabe ihres Anzeigenamens mit dem angegebenen Beweis aus.

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

Führt die Assembly unter Angabe ihres Anzeigenamens mit dem angegebenen Beweis und den angegebenen Argumenten aus.

ExecuteAssemblyByName(String, String[])

Führt die Assembly unter Angabe ihres Anzeigenamens mit den angegebenen Argumenten aus.

GetAssemblies()

Ruft die Assemblys ab, die in den Ausführungskontext dieser Anwendungsdomäne geladen wurden.

GetCurrentThreadId()
Veraltet.
Veraltet.
Veraltet.
Veraltet.
Veraltet.

Ruft den aktuellen Threadbezeichner ab.

GetData(String)

Ruft den in der aktuellen Anwendungsdomäne gespeicherten Wert für den angegebenen Namen ab.

GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetLifetimeService()
Veraltet.

Ruft das aktuelle Lebensdauerdienstobjekt ab, das die Lebensdauerrichtlinien für diese Instanz steuert.

(Geerbt von MarshalByRefObject)
GetType()

Ruft den Typ der aktuellen Instanz ab.

GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
InitializeLifetimeService()

Führt zu einer unendlichen Lebensdauer der AppDomain, indem das Erstellen eines Lease verhindert wird.

InitializeLifetimeService()
Veraltet.

Ruft ein Lebensdauerdienstobjekt zur Steuerung der Lebensdauerrichtlinie für diese Instanz ab.

(Geerbt von MarshalByRefObject)
IsCompatibilitySwitchSet(String)

Ruft einen booleschen Wert, der NULL-Werte zulässt, ab, der angibt, ob alle Kompatibilitätsschalter festgelegt werden und ob in diesem Fall der angegebene Kompatibilitätsschalter festgelegt wird.

IsDefaultAppDomain()

Gibt einen Wert zurück, der angibt, ob die Anwendungsdomäne die Standardanwendungsdomäne für den Prozess ist.

IsFinalizingForUnload()

Gibt an, ob diese Anwendungsdomäne entladen wird und ob die darin enthaltenen Objekte durch die Common Language Runtime finalisiert werden.

Load(AssemblyName)

Lädt eine Assembly bei Angabe ihres AssemblyName.

Load(AssemblyName, Evidence)
Veraltet.
Veraltet.

Lädt eine Assembly bei Angabe ihres AssemblyName.

Load(Byte[])

Lädt die Assembly mit einem COFF-Image (Common Object File Format), das eine angegebene Assembly enthält.

Load(Byte[], Byte[])

Lädt die Assembly mit einem COFF-Image (Common Object File Format), das eine angegebene Assembly enthält. Die Rohdatenbytes, die die Symbole für die Assembly darstellen, werden ebenfalls geladen.

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

Lädt die Assembly mit einem COFF-Image (Common Object File Format), das eine angegebene Assembly enthält. Die Rohdatenbytes, die die Symbole für die Assembly darstellen, werden ebenfalls geladen.

Load(String)

Lädt eine Assembly bei Angabe ihres Anzeigenamens.

Load(String, Evidence)
Veraltet.
Veraltet.

Lädt eine Assembly bei Angabe ihres Anzeigenamens.

MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
MemberwiseClone(Boolean)

Erstellt eine flache Kopie des aktuellen MarshalByRefObject-Objekts.

(Geerbt von MarshalByRefObject)
ReflectionOnlyGetAssemblies()

Gibt die Assemblys zurück, die in den auf Reflektion beschränkten Kontext der Anwendungsdomäne geladen wurden.

SetAppDomainPolicy(PolicyLevel)
Veraltet.
Veraltet.

Legt die Sicherheitsrichtlinienebene für diese Anwendungsdomäne fest.

SetCachePath(String)
Veraltet.
Veraltet.
Veraltet.
Veraltet.

Legt den angegebenen Verzeichnispfad als Speicherort für gespiegelte Assemblys fest.

SetData(String, Object)

Weist der angegebenen Anwendungsdomäneneigenschaft den angegebenen Wert zu.

SetData(String, Object, IPermission)

Weist der angegebenen Anwendungsdomäneneigenschaft den angegebenen Wert mit einer angegebenen Berechtigung zu, die der Aufrufer beim Abrufen der Eigenschaft besitzen muss.

SetDynamicBase(String)
Veraltet.
Veraltet.
Veraltet.
Veraltet.

Legt den angegebenen Verzeichnispfad als das Basisverzeichnis fest, in dem Unterverzeichnisse für die Speicherung und den Zugriff auf dynamisch generierte Dateien erstellt werden.

SetPrincipalPolicy(PrincipalPolicy)

Gibt an, wie Haupt- und Identitätsobjekte an einen Thread angefügt werden sollen, wenn während der Ausführung in dieser Anwendungsdomäne versucht wird, den Thread an einen Prinzipal zu binden.

SetShadowCopyFiles()
Veraltet.
Veraltet.
Veraltet.
Veraltet.

Aktiviert die Schattenkopiefunktion.

SetShadowCopyPath(String)
Veraltet.
Veraltet.
Veraltet.
Veraltet.

Legt den angegebenen Verzeichnispfad als Speicherort für zu spiegelnde Assemblys fest.

SetThreadPrincipal(IPrincipal)

Legt das Standardprinzipalobjekt fest, das an Threads angefügt wird, wenn bei der Ausführung in dieser Anwendungsdomäne versucht wird, diese an einen Prinzipal zu binden.

ToString()

Ruft eine Zeichenfolgendarstellung ab, die den angezeigten Namen der Anwendungsdomäne und aller Kontextrichtlinien einschließt.

Unload(AppDomain)
Veraltet.

Entlädt die angegebene Anwendungsdomäne.

Ereignisse

AssemblyLoad

Tritt beim Laden einer Assembly ein.

AssemblyResolve

Tritt ein, wenn die Auflösung einer Assembly fehlschlägt.

DomainUnload

Tritt ein, wenn eine AppDomain gerade entladen werden soll.

FirstChanceException

Tritt auf, wenn eine Ausnahme in verwaltetem Code ausgelöst wird, bevor die Laufzeit in der Aufrufliste nach einem Ausnahmehandler in der Anwendungsdomäne sucht.

ProcessExit

Tritt ein, wenn der übergeordnete Prozess der Standardanwendungsdomäne beendet wird.

ReflectionOnlyAssemblyResolve

Tritt ein, wenn die Auflösung einer Assembly in dem auf Reflektion beschränkten Kontext fehlschlägt.

ResourceResolve

Tritt ein, wenn die Auflösung einer Ressource fehlschlägt, weil die Ressource keine gültige verknüpfte oder eingebettete Ressource in der Assembly ist.

TypeResolve

Tritt ein, wenn die Auflösung eines Typs fehlschlägt.

UnhandledException

Tritt auf, wenn eine Ausnahme nicht abgefangen wird.

Explizite Schnittstellenimplementierungen

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

Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu.

_AppDomain.GetTypeInfo(UInt32, UInt32, IntPtr)

Ruft die Typinformationen für ein Objekt ab, die dann zum Abrufen der Typinformationen für eine Schnittstelle verwendet werden können.

_AppDomain.GetTypeInfoCount(UInt32)

Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1).

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

Stellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit.

Gilt für

Siehe auch