【问题标题】:Need comprehensive C# System.Threading.Tasks example需要全面的 C# System.Threading.Tasks 示例
【发布时间】:2010-07-07 22:10:56
【问题描述】:

我一直在尝试弄清楚如何使用 System.Threading.Tasks 异步调用同步 WCF 方法,同时支持取消、错误处理、结果返回和多个延续。

我遇到过许多不完整的演示,但它们似乎都有些不足。例如,我不能使用协作取消,因为我所有的 WCF 方法都是原子的并且相对较长。

【问题讨论】:

  • 任务需要在您的目标代码(自定义或其他)中提供侵入式异步支持,以启用所有这些功能 - 尤其是取消。您可以从异步方法中创建一个同步方法,但如果不修改(可能重构)代码,则不能以相反的方式进行。

标签: c# wcf multithreading task


【解决方案1】:

我会考虑另一种选择 - 使用异步方法生成 WCF 客户端接口。这将允许您异步进行所有 WCF 服务调用(从客户端应用程序的角度来看),这将允许您支持取消、错误处理、结果返回等。

好处是您不会阻塞工作线程池中的线程(就像 System.Threading.Tasks 一样),并且您不必担心如何取消同步 WCF 调用在你的工作线程中。

是否有必须进行同步 WCF 调用的原因?

【讨论】:

  • 感谢您的快速回复。不幸的是,我使用了自定义代理,所以我不能使用原生 WCF 异步...
【解决方案2】:

如果你解释一下你在做什么,它可能会有所帮助。

但是,您似乎在说您想要一个同步调用的异步版本,而这不是 Tasks 的目的。

基于任务的处理是关于使异步调用看起来像同步调用。不要像它那样只是代码看起来像它的工作方式。

【讨论】:

    猜你喜欢
    • 2013-07-04
    • 2019-07-30
    • 2011-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-29
    • 2014-09-24
    相关资源
    最近更新 更多