AppDomain Klass

Definition

Representerar en programdomän, som är en isolerad miljö där program körs. Det går inte att ärva den här klassen.

public ref class AppDomain sealed : MarshalByRefObject, _AppDomain, System::Security::IEvidenceFactory
public ref class AppDomain sealed : 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
public sealed class AppDomain : 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
type AppDomain = class
    inherit MarshalByRefObject
Public NotInheritable Class AppDomain
Inherits MarshalByRefObject
Implements _AppDomain, IEvidenceFactory
Public NotInheritable Class AppDomain
Inherits MarshalByRefObject
Arv
Attribut
Implementeringar

Exempel

Det här exemplet visar hur du skapar en ny AppDomain, instansierar en typ i den nya AppDomainoch kommunicerar med den typens objekt. Dessutom visar det här exemplet hur du tar bort det AppDomain som orsakar att objektet samlas in skräp.

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.

Kommentarer

Programdomäner, som representeras av objekt, hjälper till att tillhandahålla isolering, avlastning och säkerhetsgränser för körning av AppDomain hanterad kod.

  • Använd programdomäner för att isolera uppgifter som kan leda till en process. Om tillståndet för AppDomain det som kör en uppgift blir instabilt kan det AppDomain tas bort utan att processen påverkas. Detta är viktigt när en process måste köras under långa perioder utan att starta om. Du kan också använda programdomäner för att isolera uppgifter som inte ska dela data.
  • Om en sammansättning läses in i standardprogramdomänen kan den inte tas bort från minnet medan processen körs. Men om du öppnar en andra programdomän för att läsa in och köra sammansättningen tas sammansättningen bort när programdomänen tas bort. Använd den här tekniken för att minimera arbetsuppsättningen med tidskrävande processer som ibland använder stora DLL:er.

Note

I .NET Core och .NET 5+ begränsas implementeringen AppDomain av design och ger inte isolering, avlastning eller säkerhetsgränser. Dessa versioner har exakt en AppDomain. Isolering och lossning tillhandahålls via AssemblyLoadContext. Säkerhetsgränser bör tillhandahållas av processgränser och lämpliga fjärrkommunikationstekniker.

Flera programdomäner kan köras i en enda process. Det finns dock ingen en-till-en-korrelation mellan programdomäner och trådar. Flera trådar kan tillhöra en enda programdomän, och även om en viss tråd inte är begränsad till en enda programdomän körs en tråd i en enda programdomän vid en viss tidpunkt.

Programdomäner skapas med hjälp av CreateDomain metoden . AppDomain instanser används för att läsa in och köra sammansättningar (Assembly). När en AppDomain inte längre används kan den tas bort.

Klassen AppDomain implementerar en uppsättning händelser som gör det möjligt för program att svara när en sammansättning läses in, när en programdomän tas bort eller när ett ohanterat undantag utlöses.

Mer information om hur du använder programdomäner finns i Programdomäner.

Den här klassen implementerar gränssnitten MarshalByRefObject, _AppDomainoch IEvidenceFactory .

Du bör aldrig skapa en omslutningsbar omslutning för ett AppDomain objekt. Om du gör det kan du publicera en fjärrreferens till den AppDomain, exponera metoder som CreateInstance fjärråtkomst och effektivt förstöra kodåtkomstsäkerheten för den AppDomain. Skadliga klienter som ansluter till den fjärranslutna AppDomain kan få åtkomst till alla resurser som själva AppDomain har åtkomst till. Skapa inte fjärrkommunikationsbara omslutningar för någon typ som utökar MarshalByRefObject och som implementerar metoder som kan användas av skadliga klienter för att kringgå säkerhetssystemet.

Caution

Standardvärdet för AppDomainSetup.DisallowCodeDownload egenskapen är false. Den här inställningen är osäker för tjänster. Om du vill förhindra att tjänster laddar ned delvis betrodd kod anger du den här egenskapen till true.

Egenskaper

Name Description
ActivationContext

Hämtar aktiveringskontexten för den aktuella programdomänen.

ApplicationIdentity

Hämtar programmets identitet i programdomänen.

ApplicationTrust

Hämtar information som beskriver behörigheter som beviljats ett program och om programmet har en förtroendenivå som gör att det kan köras.

BaseDirectory

Hämtar den baskatalog som sammansättningslösaren använder för att söka efter sammansättningar.

CurrentDomain

Hämtar den aktuella programdomänen för den aktuella Thread.

DomainManager

Hämtar den domänhanterare som tillhandahölls av värden när programdomänen initierades.

DynamicDirectory

Hämtar den katalog som sammansättningslösaren använder för att söka efter dynamiskt skapade sammansättningar.

Evidence

Hämtar den Evidence associerade med den här programdomänen.

FriendlyName

Hämtar det egna namnet på den här programdomänen.

Id

Hämtar ett heltal som unikt identifierar programdomänen i processen.

IsFullyTrusted

Hämtar ett värde som anger om sammansättningar som läses in i den aktuella programdomänen körs med fullständigt förtroende.

IsHomogenous

Hämtar ett värde som anger om den aktuella programdomänen har en uppsättning behörigheter som beviljas till alla sammansättningar som läses in i programdomänen.

MonitoringIsEnabled

Hämtar eller anger ett värde som anger om processor- och minnesövervakning av programdomäner är aktiverat för den aktuella processen. När övervakning har aktiverats för en process kan den inte inaktiveras.

MonitoringSurvivedMemorySize

Hämtar antalet byte som överlevde den senaste samlingen och som är kända för att refereras av den aktuella programdomänen.

MonitoringSurvivedProcessMemorySize

Hämtar de totala byte som överlevde från den senaste samlingen för alla programdomäner i processen.

MonitoringTotalAllocatedMemorySize

Hämtar den totala storleken, i byte, på alla minnesallokeringar som har gjorts av programdomänen sedan den skapades, utan att subtrahera minne som har samlats in.

MonitoringTotalProcessorTime

Hämtar den totala processortiden som har använts av alla trådar vid körning i den aktuella programdomänen sedan processen startades.

PermissionSet

Hämtar behörighetsuppsättningen för en sandbox-programdomän.

RelativeSearchPath

Hämtar sökvägen under baskatalogen där sammansättningslösaren ska avsöka för privata sammansättningar.

SetupInformation

Hämtar konfigurationsinformation för programdomänen för den här instansen.

ShadowCopyFiles

Hämtar en indikation om programdomänen är konfigurerad för skuggkopieringsfiler.

Metoder

Name Description
AppendPrivatePath(String)
Föråldrad.
Föråldrad.

Lägger till det angivna katalognamnet i listan över privata sökvägar.

ApplyPolicy(String)

Returnerar sammansättningens visningsnamn efter att principen har tillämpats.

ClearPrivatePath()
Föråldrad.
Föråldrad.

Återställer sökvägen som anger platsen för privata sammansättningar till den tomma strängen ("").

ClearShadowCopyPath()
Föråldrad.
Föråldrad.

Återställer listan över kataloger som innehåller skuggkopior av sammansättningar till den tomma strängen ("").

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

Skapar en ny instans av en angiven COM-typ. Parametrar anger namnet på en fil som innehåller en sammansättning som innehåller typen och namnet på typen.

CreateComInstanceFrom(String, String)

Skapar en ny instans av en angiven COM-typ. Parametrar anger namnet på en fil som innehåller en sammansättning som innehåller typen och namnet på typen.

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

Skapar en ny programdomän med angivet namn, bevis, konfigurationsinformation för programdomäner, standardbehörighetsuppsättning och matris med fullständigt betrodda sammansättningar.

CreateDomain(String, Evidence, AppDomainSetup)

Skapar en ny programdomän med hjälp av angiven information om namn, bevis och programdomänkonfiguration.

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

Skapar en ny programdomän med det angivna namnet med hjälp av bevis, programbassökväg, relativ sökväg och en parameter som anger om en skuggkopia av en sammansättning ska läsas in i programdomänen. Anger en motringningsmetod som anropas när programdomänen initieras och en matris med strängargument för att skicka motringningsmetoden.

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

Skapar en ny programdomän med det angivna namnet med hjälp av bevis, programbassökväg, relativ sökväg och en parameter som anger om en skuggkopia av en sammansättning ska läsas in i programdomänen.

CreateDomain(String, Evidence)

Skapar en ny programdomän med det angivna namnet med hjälp av de angivna bevisen.

CreateDomain(String)

Skapar en ny programdomän med det angivna namnet.

CreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Föråldrad.

Skapar en ny instans av den angivna typen som definierats i den angivna sammansättningen. Parametrar anger ett bindemedel, bindningsflaggor, konstruktorargument, kulturspecifik information som används för att tolka argument, aktiveringsattribut och auktorisering för att skapa typen.

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

Skapar en ny instans av den angivna typen som definierats i den angivna sammansättningen. Parametrar anger ett bindemedel, bindningsflaggor, konstruktorargument, kulturspecifik information som används för att tolka argument och valfria aktiveringsattribut.

CreateInstance(String, String, Object[])

Skapar en ny instans av den angivna typen som definierats i den angivna sammansättningen. En parameter anger en matris med aktiveringsattribut.

CreateInstance(String, String)

Skapar en ny instans av den angivna typen som definierats i den angivna sammansättningen.

CreateInstanceAndUnwrap(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Föråldrad.

Skapar en ny instans av den angivna typen. Parametrar anger namnet på typen och hur den hittas och skapas.

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

Skapar en ny instans av den angivna typen som definierats i den angivna sammansättningen och anger om fallet med typnamnet ignoreras. bindningsattributen och bindemedlet som används för att välja den typ som ska skapas. konstruktorns argument. kultur. och aktiveringsattributen.

CreateInstanceAndUnwrap(String, String, Object[])

Skapar en ny instans av den angivna typen. Parametrar anger sammansättningen där typen definieras, namnet på typen och en matris med aktiveringsattribut.

CreateInstanceAndUnwrap(String, String)

Skapar en ny instans av den angivna typen. Parametrar anger sammansättningen där typen definieras och namnet på typen.

CreateInstanceFrom(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Föråldrad.

Skapar en ny instans av den angivna typen som definierats i den angivna sammansättningsfilen.

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

Skapar en ny instans av den angivna typen som definierats i den angivna sammansättningsfilen.

CreateInstanceFrom(String, String, Object[])

Skapar en ny instans av den angivna typen som definierats i den angivna sammansättningsfilen.

CreateInstanceFrom(String, String)

Skapar en ny instans av den angivna typen som definierats i den angivna sammansättningsfilen.

CreateInstanceFromAndUnwrap(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Föråldrad.

Skapar en ny instans av den angivna typen som definierats i den angivna sammansättningsfilen.

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

Skapar en ny instans av den angivna typen som definierats i den angivna sammansättningsfilen och anger om fallet med typnamnet ignoreras. bindningsattributen och bindemedlet som används för att välja den typ som ska skapas. konstruktorns argument. kultur. och aktiveringsattributen.

CreateInstanceFromAndUnwrap(String, String, Object[])

Skapar en ny instans av den angivna typen som definierats i den angivna sammansättningsfilen.

CreateInstanceFromAndUnwrap(String, String)

Skapar en ny instans av den angivna typen som definierats i den angivna sammansättningsfilen.

CreateObjRef(Type)

Skapar ett objekt som innehåller all relevant information som krävs för att generera en proxy som används för att kommunicera med ett fjärrobjekt.

(Ärvd från MarshalByRefObject)
DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, Evidence, PermissionSet, PermissionSet, PermissionSet)
Föråldrad.

Definierar en dynamisk sammansättning med angivet namn, åtkomstläge, bevis och behörighetsbegäranden.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, Evidence)
Föråldrad.

Definierar en dynamisk sammansättning med det angivna namnet, åtkomstläget och bevisen.

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

Definierar en dynamisk sammansättning med angivet namn, åtkomstläge och anpassade attribut och använder den angivna källan för säkerhetskontexten.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, IEnumerable<CustomAttributeBuilder>)

Definierar en dynamisk sammansättning med angivet namn, åtkomstläge och anpassade attribut.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, PermissionSet, PermissionSet, PermissionSet)
Föråldrad.

Definierar en dynamisk sammansättning med det angivna namnet, åtkomstläget och behörighetsbegäranden.

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

Definierar en dynamisk sammansättning med det angivna namnet, åtkomstläget, lagringskatalogen och synkroniseringsalternativet.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet, Boolean, IEnumerable<CustomAttributeBuilder>)
Föråldrad.

Definierar en dynamisk sammansättning med angivet namn, åtkomstläge, lagringskatalog, bevis, behörighetsbegäranden, synkroniseringsalternativ och anpassade attribut.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet, Boolean)
Föråldrad.

Definierar en dynamisk sammansättning med det angivna namnet, åtkomstläget, lagringskatalogen, bevis, behörighetsbegäranden och synkroniseringsalternativet.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet)
Föråldrad.

Definierar en dynamisk sammansättning med angivet namn, åtkomstläge, lagringskatalog, bevis och behörighetsbegäranden.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence)
Föråldrad.

Definierar en dynamisk sammansättning med det angivna namnet, åtkomstläget, lagringskatalogen och bevisen.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, PermissionSet, PermissionSet, PermissionSet)
Föråldrad.

Definierar en dynamisk sammansättning med det angivna namnet, åtkomstläget, lagringskatalogen och behörighetsbegäranden.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String)

Definierar en dynamisk sammansättning med det angivna namnet, åtkomstläget och lagringskatalogen.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess)

Definierar en dynamisk sammansättning med det angivna namnet och åtkomstläget.

DoCallBack(CrossAppDomainDelegate)

Kör koden i en annan programdomän som identifieras av det angivna ombudet.

Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
ExecuteAssembly(String, Evidence, String[], Byte[], AssemblyHashAlgorithm)
Föråldrad.

Kör sammansättningen i den angivna filen med hjälp av angivna bevis, argument, hash-värde och hash-algoritm.

ExecuteAssembly(String, Evidence, String[])
Föråldrad.

Kör sammansättningen som finns i den angivna filen med hjälp av angivna bevis och argument.

ExecuteAssembly(String, Evidence)
Föråldrad.

Kör sammansättningen som finns i den angivna filen med hjälp av angivna bevis.

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

Kör sammansättningen i den angivna filen med de angivna argumenten, hash-värdet och hash-algoritmen.

ExecuteAssembly(String, String[])

Kör sammansättningen som finns i den angivna filen med hjälp av de angivna argumenten.

ExecuteAssembly(String)

Kör sammansättningen som finns i den angivna filen.

ExecuteAssemblyByName(AssemblyName, Evidence, String[])
Föråldrad.

Kör sammansättningen givet en AssemblyName, med angivna bevis och argument.

ExecuteAssemblyByName(AssemblyName, String[])

Kör sammansättningen med angiven AssemblyName, med hjälp av de angivna argumenten.

ExecuteAssemblyByName(String, Evidence, String[])
Föråldrad.

Kör sammansättningen med sitt visningsnamn med angivna bevis och argument.

ExecuteAssemblyByName(String, Evidence)
Föråldrad.

Kör en sammansättning med sitt visningsnamn med hjälp av angivna bevis.

ExecuteAssemblyByName(String, String[])

Kör sammansättningen med sitt visningsnamn med de angivna argumenten.

ExecuteAssemblyByName(String)

Kör en sammansättning med dess visningsnamn.

GetAssemblies()

Hämtar de sammansättningar som har lästs in i körningskontexten för den här programdomänen.

GetCurrentThreadId()
Föråldrad.
Föråldrad.

Hämtar den aktuella trådidentifieraren.

GetData(String)

Hämtar värdet som lagras i den aktuella programdomänen för det angivna namnet.

GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetLifetimeService()

Hämtar det aktuella livslängdstjänstobjektet som styr livslängdsprincipen för den här instansen.

(Ärvd från MarshalByRefObject)
GetType()

Hämtar den aktuella instansens typ.

GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
InitializeLifetimeService()

Ger en AppDomain oändlig livslängd genom att förhindra att ett lån skapas.

InitializeLifetimeService()

Hämtar ett tjänstobjekt för livslängd för att styra livslängdsprincipen för den här instansen.

(Ärvd från MarshalByRefObject)
IsCompatibilitySwitchSet(String)

Hämtar ett booleskt värde som anger om några kompatibilitetsväxlar har angetts och i så fall om den angivna kompatibilitetsväxeln har angetts.

IsDefaultAppDomain()

Returnerar ett värde som anger om programdomänen är standardprogramdomänen för processen.

IsFinalizingForUnload()

Anger om den här programdomänen tas bort och de objekt som den innehåller slutförs av den vanliga språkkörningen.

Load(AssemblyName, Evidence)
Föråldrad.

Läser in en Assembly angiven dess AssemblyName.

Load(AssemblyName)

Läser in en Assembly angiven dess AssemblyName.

Load(Byte[], Byte[], Evidence)
Föråldrad.

Assembly Läser in med en COFF-baserad bild (Common Object File Format) som innehåller en genererad Assembly. De råa byte som representerar symbolerna Assembly för läses också in.

Load(Byte[], Byte[])

Assembly Läser in med en COFF-baserad bild (Common Object File Format) som innehåller en genererad Assembly. De råa byte som representerar symbolerna Assembly för läses också in.

Load(Byte[])

Assembly Läser in med en COFF-baserad bild (Common Object File Format) som innehåller en genererad Assembly.

Load(String, Evidence)
Föråldrad.

Läser in ett givet Assembly visningsnamn.

Load(String)

Läser in ett givet Assembly visningsnamn.

MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
MemberwiseClone(Boolean)

Skapar en ytlig kopia av det aktuella MarshalByRefObject objektet.

(Ärvd från MarshalByRefObject)
ReflectionOnlyGetAssemblies()

Returnerar de sammansättningar som har lästs in i programdomänens reflektionskontext.

SetAppDomainPolicy(PolicyLevel)
Föråldrad.

Upprättar säkerhetsprincipnivån för den här programdomänen.

SetCachePath(String)
Föråldrad.
Föråldrad.

Etablerar den angivna katalogsökvägen som den plats där sammansättningar skuggkopieras.

SetData(String, Object, IPermission)

Tilldelar det angivna värdet till den angivna programdomänegenskapen med en angiven behörighet att kräva av anroparen när egenskapen hämtas.

SetData(String, Object)

Tilldelar det angivna värdet till den angivna programdomänegenskapen.

SetDynamicBase(String)
Föråldrad.
Föråldrad.

Etablerar den angivna katalogsökvägen som baskatalog för underkataloger där dynamiskt genererade filer lagras och används.

SetPrincipalPolicy(PrincipalPolicy)

Anger hur huvud- och identitetsobjekt ska kopplas till en tråd om tråden försöker binda till ett huvudnamn när den körs i den här programdomänen.

SetShadowCopyFiles()
Föråldrad.
Föråldrad.

Aktiverar skuggkopiering.

SetShadowCopyPath(String)
Föråldrad.
Föråldrad.

Etablerar den angivna katalogsökvägen som platsen för sammansättningar som ska skuggkopieras.

SetThreadPrincipal(IPrincipal)

Anger standardobjektet som ska kopplas till trådar om de försöker binda till ett huvudnamn vid körning i den här programdomänen.

ToString()

Hämtar en strängrepresentation som innehåller det egna namnet på programdomänen och eventuella kontextprinciper.

Unload(AppDomain)

Tar bort den angivna programdomänen.

Händelser

Name Description
AssemblyLoad

Inträffar när en sammansättning läses in.

AssemblyResolve

Inträffar när lösningen för en sammansättning misslyckas.

DomainUnload

Inträffar när en AppDomain är på väg att tas bort.

FirstChanceException

Inträffar när ett undantag genereras i hanterad kod innan körningen söker i anropsstacken efter en undantagshanterare i programdomänen.

ProcessExit

Inträffar när standardprogramdomänens överordnade process avslutas.

ReflectionOnlyAssemblyResolve

Inträffar när lösningen för en sammansättning misslyckas i kontexten endast för reflektion.

ResourceResolve

Inträffar när lösningen på en resurs misslyckas eftersom resursen inte är en giltig länkad eller inbäddad resurs i sammansättningen.

TypeResolve

Inträffar när en typs upplösning misslyckas.

UnhandledException

Inträffar när ett undantag inte fångas.

Explicita gränssnittsimplementeringar

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

Mappar en uppsättning namn till en motsvarande uppsättning av sändningsidentifierare.

_AppDomain.GetTypeInfo(UInt32, UInt32, IntPtr)

Hämtar typinformationen för ett objekt, som sedan kan användas för att hämta typinformationen för ett gränssnitt.

_AppDomain.GetTypeInfoCount(UInt32)

Hämtar antalet typinformationsgränssnitt som ett objekt tillhandahåller (antingen 0 eller 1).

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

Ger åtkomst till egenskaper och metoder som exponeras av ett objekt.

Gäller för

Se även