【问题标题】:asynchronus operation in WCFWCF 中的异步操作
【发布时间】:2015-08-03 22:43:46
【问题描述】:

我正在使用 c# 语言。 具有方法“MethodA”的简单 WCF 服务正在做耗时的繁重工作。因此,对于应用程序性能,我创建了服务代理并选择“生成异步操作”选项。 现在在客户端我得到了更多的方法“BeginMethodA”,“EndMethodA”。 现在我调用了“BegineMethodA”并传递了适当的参数。 在客户端,我有回调方法,它实际上返回了“MethodA”的结果。我什至不叫“EndMethodA”。 “EndMethodA”有什么重要用途,我需要调用这个方法来完成操作吗?

【问题讨论】:

    标签: c# wcf asynchronous


    【解决方案1】:

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

    请注意,有两种方法可以简化此操作。

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

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

    【讨论】:

    • 感谢@BradleyDotNET,在标记为答案之前,我想再问一个问题。当我们使用任务工厂并启动任务时。结果准备好后,我需要处理该任务吗?或者任务工厂会处理这个问题。
    • @Prashant 我认为您不需要处理 Task 对象,只需 await 即可。
    猜你喜欢
    • 2018-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多