WCF 异步调用问题
添加引用时生成”勾选允许生成异步操作”
Wcf异步调用三种方式:
第一种:直接调用异步方法
var serviceClient = new MyServiceClient();
serviceClient.MessageAsync();
erviceClient.Close();
第二种:Begin、End方式
serviceClient.BeginMessage(delegate(IAsyncResult asyncResult)
{
serviceClient.EndMessage(asyncResult);
serviceClient.Close();
}, null);
第三种:通过注册事件的方式
serviceClient.MessageCompleted += delegate(object sender, PushBatchMessageCompletedEventArgs e)
{
if (serviceClient != null)
{
serviceClient.Close();
}
};
serviceClient.MessageAsync();
通过实验,前2种方式在调用Close()方法时程序会停留等待服务器端执行完成才能往下继续执行,而第3种通过注册事件的方案不需要等待。