AppDomain.DoCallBack-Methode
Führt den Code in einer anderen Anwendungsdomäne aus, die durch den angegebenen Delegaten bezeichnet wird.
Namespace: System
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
Public Sub DoCallBack ( _
callBackDelegate As CrossAppDomainDelegate _
)
'Usage
Dim instance As AppDomain
Dim callBackDelegate As CrossAppDomainDelegate
instance.DoCallBack(callBackDelegate)
public void DoCallBack (
CrossAppDomainDelegate callBackDelegate
)
public:
virtual void DoCallBack (
CrossAppDomainDelegate^ callBackDelegate
) sealed
public final void DoCallBack (
CrossAppDomainDelegate callBackDelegate
)
public final function DoCallBack (
callBackDelegate : CrossAppDomainDelegate
)
Parameter
- callBackDelegate
Ein Delegat, der eine aufzurufende Methode angibt.
Hinweise
callBackDelegate kann ein als Wert gemarshalltes Objekt, ein MarshalByRefObject oder ein ContextBoundObject angeben.
Beispiel
Im folgenden Beispiel wird die Verwendung einer statischen DoCallBack-Methode veranschaulicht.
Public Module PingPong
Private greetings As String = "PONG!"
Sub Main()
Dim currentDomain As AppDomain = AppDomain.CurrentDomain
Dim otherDomain As AppDomain = AppDomain.CreateDomain("otherDomain")
greetings = "PING!"
MyCallBack()
otherDomain.DoCallBack(AddressOf MyCallBack)
' Output:
' PING! from default domain
' PONG! from otherDomain
End Sub 'Main
Sub MyCallBack()
Dim name As String = AppDomain.CurrentDomain.FriendlyName
Console.WriteLine(greetings + " from " + name)
End Sub 'MyCallBack
End Module 'PingPong
static string greetings = "PONG!";
public static void Main() {
AppDomain currentDomain = AppDomain.CurrentDomain;
AppDomain otherDomain = AppDomain.CreateDomain("otherDomain");
greetings = "PING!";
MyCallBack();
otherDomain.DoCallBack(new CrossAppDomainDelegate(MyCallBack));
// Output:
// PING! from default domain
// PONG! from otherDomain
}
static public void MyCallBack() {
string name = AppDomain.CurrentDomain.FriendlyName;
Console.WriteLine(greetings + " from " + name);
}
public ref class PingPong
{
private:
static String^ greetings = "PONG!";
public:
static void MyCallBack()
{
String^ name = AppDomain::CurrentDomain->FriendlyName;
Console::WriteLine( "{0} from {1}", greetings, name );
}
static void Ping()
{
AppDomain^ currentDomain = AppDomain::CurrentDomain;
AppDomain^ otherDomain = AppDomain::CreateDomain( "otherDomain" );
greetings = "PING!";
MyCallBack();
otherDomain->DoCallBack( gcnew CrossAppDomainDelegate( MyCallBack ) );
// Output:
// PING! from default domain
// PONG! from otherDomain
}
};
int main()
{
PingPong::Ping();
}
private static String greetings = "PONG!";
public static void main(String[] args)
{
AppDomain currentDomain = AppDomain.get_CurrentDomain();
AppDomain otherDomain = AppDomain.CreateDomain("otherDomain");
greetings = "PING!";
MyCallBack();
otherDomain.DoCallBack(new CrossAppDomainDelegate(MyCallBack));
// Output:
// PING! from default domain
// PONG! from otherDomain
} //main
public static void MyCallBack()
{
String name = AppDomain.get_CurrentDomain().get_FriendlyName();
Console.WriteLine(greetings + " from " + name);
} //MyCallBack
Im folgenden Beispiel wird die Verwendung der DoCallBack-Methode als Wert veranschaulicht.
<Serializable> _
Public Class PingPong
Private greetings As String = "PING!"
Public Shared Sub Main()
Dim currentDomain As AppDomain = AppDomain.CurrentDomain
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 otherDomain
End Sub 'Main
Public Sub MyCallBack()
Dim name As String = AppDomain.CurrentDomain.FriendlyName
Console.WriteLine(greetings + " from " + name)
End Sub 'MyCallBack
End Class 'PingPong
[Serializable]
public class PingPong {
private string greetings = "PING!";
public static void Main() {
AppDomain currentDomain = AppDomain.CurrentDomain;
AppDomain otherDomain = AppDomain.CreateDomain("otherDomain");
PingPong pp = new PingPong();
pp.MyCallBack();
pp.greetings = "PONG!";
otherDomain.DoCallBack(new CrossAppDomainDelegate(pp.MyCallBack));
// Output:
// PING! from default domain
// PONG! from otherDomain
}
public void MyCallBack() {
string name = AppDomain.CurrentDomain.FriendlyName;
Console.WriteLine(greetings + " from " + name);
}
}
[Serializable]
public ref class PingPong
{
private:
String^ greetings;
public:
PingPong()
{
greetings = "PING!";
}
void MyCallBack()
{
String^ name = AppDomain::CurrentDomain->FriendlyName;
Console::WriteLine( "{0} from {1}", greetings, name );
}
static void Ping()
{
AppDomain^ currentDomain = AppDomain::CurrentDomain;
AppDomain^ otherDomain = AppDomain::CreateDomain( "otherDomain" );
PingPong^ pp = gcnew PingPong;
pp->MyCallBack();
pp->greetings = "PONG!";
otherDomain->DoCallBack( gcnew CrossAppDomainDelegate( pp, &PingPong::MyCallBack ) );
// Output:
// PING! from default domain
// PONG! from otherDomain
}
};
int main()
{
PingPong::Ping();
}
/** @attribute Serializable()
*/
public class PingPong
{
private String greetings = "PING!";
public static void main(String[] args)
{
AppDomain currentDomain = AppDomain.get_CurrentDomain();
AppDomain otherDomain = AppDomain.CreateDomain("otherDomain");
PingPong pp = new PingPong();
pp.MyCallBack();
pp.greetings = "PONG!";
otherDomain.DoCallBack(new CrossAppDomainDelegate(pp.MyCallBack));
// Output:
// PING! from default domain
// PONG! from otherDomain
} //main
public void MyCallBack()
{
String name = AppDomain.get_CurrentDomain().get_FriendlyName();
Console.WriteLine(greetings + " from " + name);
} //MyCallBack
} //PingPong
Im folgenden Beispiel wird die Verwendung der DoCallBack-Methode als Verweis veranschaulicht.
Public Class PingPong
Inherits MarshalByRefObject
Private greetings As String = "PING!"
Public Shared Sub Main()
Dim currentDomain As AppDomain = AppDomain.CurrentDomain
Dim otherDomain As AppDomain = AppDomain.CreateDomain("otherDomain")
Dim pp As New PingPong()
otherDomain.DoCallBack(AddressOf pp.MyCallBack)
pp.MyCallBack()
' Output:
' PING! from default domain
' PONG! from default domain
End Sub 'Main
Public Sub MyCallBack()
Dim name As String = AppDomain.CurrentDomain.FriendlyName
Console.WriteLine((greetings + " from " + name))
greetings = "PONG!"
End Sub 'MyCallBack
End Class 'PingPong
public class PingPong : MarshalByRefObject {
private string greetings = "PING!";
public static void Main() {
AppDomain currentDomain = AppDomain.CurrentDomain;
AppDomain otherDomain = AppDomain.CreateDomain("otherDomain");
PingPong pp = new PingPong();
otherDomain.DoCallBack(new CrossAppDomainDelegate(pp.MyCallBack));
pp.MyCallBack();
// Output:
// PING! from default domain
// PONG! from default domain
}
public void MyCallBack() {
string name = AppDomain.CurrentDomain.FriendlyName;
Console.WriteLine(greetings + " from " + name);
greetings = "PONG!";
}
}
public ref class PingPong: public MarshalByRefObject
{
private:
String^ greetings;
public:
PingPong()
{
greetings = "PING!";
}
void MyCallBack()
{
String^ name = AppDomain::CurrentDomain->FriendlyName;
Console::WriteLine( "{0} from {1}", greetings, name );
greetings = "PONG!";
}
static void Ping()
{
AppDomain^ currentDomain = AppDomain::CurrentDomain;
AppDomain^ otherDomain = AppDomain::CreateDomain( "otherDomain" );
PingPong^ pp = gcnew PingPong;
otherDomain->DoCallBack( gcnew CrossAppDomainDelegate( pp, &PingPong::MyCallBack ) );
pp->MyCallBack();
// Output:
// PING! from default domain
// PONG! from default domain
}
};
int main()
{
PingPong::Ping();
}
public class PingPong extends MarshalByRefObject
{
private String greetings = "PING!";
public static void main(String[] args)
{
AppDomain currentDomain = AppDomain.get_CurrentDomain();
AppDomain otherDomain = AppDomain.CreateDomain("otherDomain");
PingPong pp = new PingPong();
otherDomain.DoCallBack(new CrossAppDomainDelegate(pp.MyCallBack));
pp.MyCallBack();
// Output:
// PING! from default domain
// PONG! from default domain
} //main
public void MyCallBack()
{
String name = AppDomain.get_CurrentDomain().get_FriendlyName();
Console.WriteLine(greetings + " from " + name);
greetings = "PONG!";
} //MyCallBack
} //PingPong
Plattformen
Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0