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方法結束之前執行。而它等到callback2結束。