AppDomain.DoCallBack(CrossAppDomainDelegate) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
지정한 대리자에서 식별한 다른 애플리케이션 도메인에 있는 코드를 실행합니다.
public:
virtual void DoCallBack(CrossAppDomainDelegate ^ callBackDelegate);
public:
void DoCallBack(CrossAppDomainDelegate ^ callBackDelegate);
public void DoCallBack (CrossAppDomainDelegate callBackDelegate);
abstract member DoCallBack : CrossAppDomainDelegate -> unit
override this.DoCallBack : CrossAppDomainDelegate -> unit
member this.DoCallBack : CrossAppDomainDelegate -> unit
Public Sub DoCallBack (callBackDelegate As CrossAppDomainDelegate)
매개 변수
- callBackDelegate
- CrossAppDomainDelegate
호출할 메서드를 지정하는 대리자입니다.
구현
예외
callBackDelegate
이(가) null
인 경우
예제
다음 샘플에서는 정적 DoCallBack 메서드를 사용하는 방법을 보여 줍니다.
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);
}
open System
let mutable greetings = "PONG!"
let myCallBack () =
let mutable name = AppDomain.CurrentDomain.FriendlyName
if name = AppDomain.CurrentDomain.SetupInformation.ApplicationName then
name <- "defaultDomain"
printfn $"{greetings} from {name}"
let otherDomain = AppDomain.CreateDomain "otherDomain"
greetings <- "PING!"
myCallBack ()
otherDomain.DoCallBack(CrossAppDomainDelegate myCallBack)
// Output:
// PING! from defaultDomain
// PONG! from otherDomain
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
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
End Module 'PingPong
다음 샘플에서는 메서드를 값으로 사용하는 방법을 DoCallBack 보여 줍니다.
[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);
}
}
open System
[<Serializable>]
type PingPong() as this =
[<DefaultValue>]
val mutable greetings: string
do
this.greetings <- "PING!"
member _.MyCallBack() =
let mutable name = AppDomain.CurrentDomain.FriendlyName
if name = AppDomain.CurrentDomain.SetupInformation.ApplicationName then
name <- "defaultDomain"
printfn $"{this.greetings} from {name}"
let otherDomain = AppDomain.CreateDomain "otherDomain"
let pp = PingPong()
pp.MyCallBack()
pp.greetings <- "PONG!"
otherDomain.DoCallBack(CrossAppDomainDelegate pp.MyCallBack)
// Output:
// PING! from defaultDomain
// PONG! from otherDomain
<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
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
End Class
다음 샘플에서는 메서드를 참조로 사용하는 방법을 DoCallBack 보여 줍니다.
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);
}
}
open System
type PingPong() as this =
inherit MarshalByRefObject()
[<DefaultValue>]
val mutable greetings: string
do
this.greetings <- "PING!"
// Callback will always execute within defaultDomain due to inheritance from MarshalByRefObject
member this.MyCallBack() =
let mutable name = AppDomain.CurrentDomain.FriendlyName
if name = AppDomain.CurrentDomain.SetupInformation.ApplicationName then
name <- "defaultDomain"
printfn $"{this.greetings} from {name}"
let otherDomain = AppDomain.CreateDomain "otherDomain"
let pp = new PingPong()
pp.MyCallBack()
pp.greetings <- "PONG!"
otherDomain.DoCallBack(CrossAppDomainDelegate pp.MyCallBack)
// Output:
// PING! from defaultDomain
// PONG! from defaultDomain
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
' 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
End Class
설명
callBackDelegate
는 값MarshalByRefObject으로 마샬링 또는 ContextBoundObject