AppDomain.DoCallBack(CrossAppDomainDelegate) AppDomain.DoCallBack(CrossAppDomainDelegate) AppDomain.DoCallBack(CrossAppDomainDelegate) AppDomain.DoCallBack(CrossAppDomainDelegate) Method

Definition

Führt den Code in einer anderen Anwendungsdomäne aus, die durch den angegebenen Delegaten bezeichnet wird.Executes the code in another application domain that is identified by the specified delegate.

public:
 virtual void DoCallBack(CrossAppDomainDelegate ^ callBackDelegate);
public void DoCallBack (CrossAppDomainDelegate callBackDelegate);
abstract member DoCallBack : CrossAppDomainDelegate -> unit
override this.DoCallBack : CrossAppDomainDelegate -> unit
Public Sub DoCallBack (callBackDelegate As CrossAppDomainDelegate)

Parameter

callBackDelegate
CrossAppDomainDelegate CrossAppDomainDelegate CrossAppDomainDelegate CrossAppDomainDelegate

Ein Delegat, der eine aufzurufende Methode angibt.A delegate that specifies a method to call.

Implementiert

Ausnahmen

callBackDelegate ist null.callBackDelegate is null.

Beispiele

Im folgenden Beispiel wird die Verwendung einer DoCallBack statischen-Methode veranschaulicht.The following sample demonstrates using a static DoCallBack method.

public ref class PingPong
{
private:
    static String^ greetings = "PONG!";

public:
    static void Main()
    {
        AppDomain^ otherDomain = AppDomain::CreateDomain("otherDomain");

        greetings = "PING!";
        MyCallBack();
        otherDomain->DoCallBack(gcnew CrossAppDomainDelegate(MyCallBack));

        // Output:
        //   PING! from defaultDomain
        //   PONG! from otherDomain
    }

    static void MyCallBack()
    {
        String^ name = AppDomain::CurrentDomain->FriendlyName;

        if (name == AppDomain::CurrentDomain->SetupInformation->ApplicationName)
        {
            name = "defaultDomain";
        }
        Console::WriteLine(greetings + " from " + name);
    }
};

int main()
{
   PingPong::Main();
}
static string greetings = "PONG!";

public static void Main()
{
    AppDomain otherDomain = AppDomain.CreateDomain("otherDomain");

    greetings = "PING!";
    MyCallBack();
    otherDomain.DoCallBack(new CrossAppDomainDelegate(MyCallBack));

    // Output:
    //   PING! from defaultDomain
    //   PONG! from otherDomain
}

static public void MyCallBack()
{
    string name = AppDomain.CurrentDomain.FriendlyName;

    if (name == AppDomain.CurrentDomain.SetupInformation.ApplicationName)
    {
        name = "defaultDomain";
    }
    Console.WriteLine(greetings + " from " + name);
}
Public Module PingPong

    Private greetings As String = "PONG!"

    Sub Main()
        Dim otherDomain As AppDomain = AppDomain.CreateDomain("otherDomain")

        greetings = "PING!"
        MyCallBack()
        otherDomain.DoCallBack(AddressOf MyCallBack)

        ' Output:
        '   PING! from defaultDomain
        '   PONG! from otherDomain
     End Sub 'Main

     Sub MyCallBack()
        Dim name As String = AppDomain.CurrentDomain.FriendlyName
        If name = AppDomain.CurrentDomain.SetupInformation.ApplicationName Then
            name = "defaultDomain"
        End If
        Console.WriteLine(greetings + " from " + name)
     End Sub 'MyCallBack

End Module 'PingPong

Im folgenden Beispiel wird die Verwendung DoCallBack der-Methode nach Wert veranschaulicht.The following sample demonstrates using the DoCallBack method by value.


[Serializable]
public ref class PingPong
{
private:
    String^ greetings;

public:
    PingPong()
    {
        greetings = "PING!";
    }

    static void Main()
    {
        AppDomain^ otherDomain = AppDomain::CreateDomain("otherDomain");

        PingPong^ pp = gcnew PingPong();
        pp->MyCallBack();
        pp->greetings = "PONG!";
        otherDomain->DoCallBack(gcnew CrossAppDomainDelegate( pp, &PingPong::MyCallBack));

        // Output:
        //   PING! from defaultDomain
        //   PONG! from otherDomain
    }

    void MyCallBack()
    {
        String^ name = AppDomain::CurrentDomain->FriendlyName;

        if (name == AppDomain::CurrentDomain->SetupInformation->ApplicationName)
        {
            name = "defaultDomain";
        }
        Console::WriteLine(greetings + " from " + name);
    }
};

int main()
{
   PingPong::Main();
}

[Serializable]
public class PingPong
{
    private string greetings = "PING!";

    public static void Main()
    {
        AppDomain otherDomain = AppDomain.CreateDomain("otherDomain");

        PingPong pp = new PingPong();
        pp.MyCallBack();
        pp.greetings = "PONG!";
        otherDomain.DoCallBack(new CrossAppDomainDelegate(pp.MyCallBack));

        // Output:
        //   PING! from defaultDomain
        //   PONG! from otherDomain
    }

    public void MyCallBack()
    {
        string name = AppDomain.CurrentDomain.FriendlyName;

        if (name == AppDomain.CurrentDomain.SetupInformation.ApplicationName)
        {
            name = "defaultDomain";
        }
        Console.WriteLine(greetings + " from " + name);
    }
}
<Serializable> _
Public Class PingPong
     Private greetings As String = "PING!"

     Public Shared Sub Main()
        Dim otherDomain As AppDomain = AppDomain.CreateDomain("otherDomain")

        Dim pp As New PingPong()
        pp.MyCallBack()
        pp.greetings = "PONG!"
        otherDomain.DoCallBack(AddressOf pp.MyCallBack)

        ' Output:
        '   PING! from defaultDomain
        '   PONG! from otherDomain
    End Sub 'Main

    Public Sub MyCallBack()
        Dim name As String = AppDomain.CurrentDomain.FriendlyName
        If name = AppDomain.CurrentDomain.SetupInformation.ApplicationName Then
            name = "defaultDomain"
        End If
        Console.WriteLine(greetings + " from " + name)
    End Sub 'MyCallBack

End Class 'PingPong

Im folgenden Beispiel wird die Verwendung DoCallBack der-Methode als Verweis veranschaulicht.The following sample demonstrates using the DoCallBack method by reference.

public ref class PingPong : public MarshalByRefObject
{
private:
   String^ greetings;

public:
    PingPong()
    {
        greetings = "PING!";
    }

    static void Main()
    {
        AppDomain^ otherDomain = AppDomain::CreateDomain("otherDomain");

        PingPong^ pp = gcnew PingPong();
        pp->MyCallBack();
        pp->greetings = "PONG!";
        otherDomain->DoCallBack(gcnew CrossAppDomainDelegate( pp, &PingPong::MyCallBack));

        // Output:
        //   PING! from defaultDomain
        //   PONG! from defaultDomain
    }

    // Callback will always execute within defaultDomain due to inheritance from
    // MarshalByRefObject
    void MyCallBack()
    {
        String^ name = AppDomain::CurrentDomain->FriendlyName;
        if (name == AppDomain::CurrentDomain->SetupInformation->ApplicationName)
        {
            name = "defaultDomain";
        }
        Console::WriteLine(greetings + " from " + name);
    }
};

int main()
{
   PingPong::Main();
}

public class PingPong : MarshalByRefObject
{
    private string greetings = "PING!";

    public static void Main()
    {
        AppDomain otherDomain = AppDomain.CreateDomain("otherDomain");

        PingPong pp = new PingPong();
        pp.MyCallBack();
        pp.greetings = "PONG!";
        otherDomain.DoCallBack(new CrossAppDomainDelegate(pp.MyCallBack));

        // Output:
        //   PING! from defaultDomain
        //   PONG! from defaultDomain
    }

    // Callback will always execute within defaultDomain due to inheritance from
    // MarshalByRefObject
    public void MyCallBack()
    {
        string name = AppDomain.CurrentDomain.FriendlyName;
        if (name == AppDomain.CurrentDomain.SetupInformation.ApplicationName)
        {
            name = "defaultDomain";
        }
        Console.WriteLine(greetings + " from " + name);
    }
}
Public Class PingPong
    Inherits MarshalByRefObject

    Private greetings As String = "PING!"
   
    Public Shared Sub Main()
        Dim otherDomain As AppDomain = AppDomain.CreateDomain("otherDomain")

        Dim pp As New PingPong()
        pp.MyCallBack()
        pp.greetings = "PONG!"
        otherDomain.DoCallBack(AddressOf pp.MyCallBack)

        ' Output:
        '   PING! from default domain
        '   PONG! from default domain
     End Sub 'Main

    ' Callback will always execute within defaultDomain due to inheritance from
    ' MarshalByRefObject
    Public Sub MyCallBack()
        Dim name As String = AppDomain.CurrentDomain.FriendlyName
        If name = AppDomain.CurrentDomain.SetupInformation.ApplicationName Then
            name = "defaultDomain"
        End If
        Console.WriteLine((greetings + " from " + name))
    End Sub 'MyCallBack

End Class 'PingPong

Hinweise

callBackDelegatekann einen Marshal-by-Value-, MarshalByRefObject-oder ContextBoundObject-Wert angeben.callBackDelegate can specify a marshal-by-value, MarshalByRefObject, or ContextBoundObject.

Gilt für: