2
WCF 콜백을 구현하려고합니다. 내 서비스 측면에서 콜백 메서드를 호출하면 비동기 적으로 실행됩니다. 콜백 메소드가 다음 명령문으로 넘어 가기 전에 콜백 메소드가 실행을 완료 할 때까지 기다릴 수있는 방법이 있는가?WCF 콜백 - 동기 실행
//Server Side
public interface ICallback
{
[OperationContract]
void Oncallback1(string str);
[OperationContract]
int Oncallback2(string str);
}
[ServiceContract(CallbackContract = typeof(ICallback))]
public interface IServiceContract
{
[OperationContract]
void Method1();
}
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Reentrant)]
public class MycallbackService : IServiceContract
{
public void Method1()
{
ICallback objIcallback = OperationContext.Current.GetCallbackChannel<ICallback>();
Thread.Sleep(5000);
objIcallback.Oncallback1(obj1);
Console.WriteLine("calling callback2");
Console.WriteLine(objIcallback.Oncallback2("2"));
Console.WriteLine("Service Execution over!");
}
}
//Client Side
[CallbackBehavior]
public class callbackClient : ICallback
{
public void Oncallback1(CallbackService.EventInfo obj)
{
Thread.Sleep(5000);
Console.WriteLine("Callback 1");
}
public int Oncallback2(string str)
{
Thread.Sleep(5000);
Console.WriteLine("Callback 4");
return 2;
}
}
여기서 "Console.WriteLine ("calling callback2 ");" callback1 메서드가 완료되기 전에 실행됩니다. 반면 콜백 2가 끝날 때까지 대기합니다. 그것은 IsOneWay = true
파이어 앤 포겟 작업입니다 기본적으로 그래서
void Oncallback1(string str);
int Oncallback2(string str);
Oncallback1
아무것도 반환 :이 때문에 콜백 method`s의 차이라고 생각