异步WCF服务调用

时间:2014-08-04 13:29:07

标签: c# .net wcf asynchronous

我正在使用EAP从WP页面异步调用WCF服务:

ServiceReference1.Service1Client proxy = new ServiceReference1.Service1Client();
proxy.loginCompleted += DoLogin;
proxy.loginAsync("user", "password");

在Rererence.cs中,我看到以下代码看起来像APM:

public System.IAsyncResult Beginlogin(string usn, string pwd, System.AsyncCallback callback, object asyncState) 
{
    object[] _args = new object[2];
    _args[0] = usn;
    _args[1] = pwd;
    System.IAsyncResult _result = base.BeginInvoke("login", _args, callback, asyncState);
    return _result;
}

public bool Endlogin(System.IAsyncResult result)
{
    object[] _args = new object[0];
    bool _result = ((bool)(base.EndInvoke("login", _args, result)));
    return _result;
}

为什么我在使用EAP调用WCF服务时会使用APM方法?

1 个答案:

答案 0 :(得分:3)

在客户端生成服务引用并将其设置为生成异步操作时,从.NET 3.5及更高版本开始,它将调用svcutil.exe使用/async /tcv:Version35参数,将生成APM和EAP异步操作。

来自MSDN

  

将/ tcv:Version35与/ async开关一起使用时,基于事件的和   生成基于回调/委托的异步方法。在   此外,支持启用LINQ的DataSet和DateTimeOffset   启用。

相关问题