【问题标题】:Asynchronous WCF service call异步 WCF 服务调用
【发布时间】:2014-08-04 13:29:07
【问题描述】:

我正在使用 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 方法?

【问题讨论】:

    标签: c# .net wcf asynchronous


    【解决方案1】:

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

    来自MSDN

    当使用 /tcv:Version35 和 /async 开关时,基于事件和 生成基于回调/委托的异步方法。在 此外,对启用 LINQ 的数据集和 DateTimeOffset 的支持是 已启用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-04
      • 2012-10-03
      • 2020-01-21
      • 2018-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多