WCF 中的异步操作

asynchronus operation in WCF

我使用的是c#语言。 具有方法 "MethodA" 的简单 WCF 服务正在执行耗时繁重的工作。因此,为了应用程序性能,我创建了服务代理并选择了选项 "Generate asynchronous operations"。 现在在客户端,我得到了更多的方法"BeginMethodA","EndMethodA"。 现在我调用 "BegineMethodA" 并传递适当的参数。 在客户端,我有回调方法,它实际上返回 "MethodA" 的结果。我什至不打电话 "EndMethodA"。 "EndMethodA" 需要调用这个方法来完成操作吗?

是的,您确实需要致电 EndMethodA。您在异步回调中执行此操作以获得实际结果(如果它具有 return 值)。

请注意,有两种方法可以简化此过程。

  1. 只需使用Task。您实际上可以跨 WCF 通道等待。
  2. 如果您已经有 Begin/End 方法,请使用 Task.Factory.FromAsyncawait that

从客户端的角度来看,这两种方法都更加简洁,并且允许您忽略旧 Begin/End 模式中的 ugliness/confusion。