c# - wcf 基于任务的异步模式

标签 c# wcf asynchronous task

我正在为 wcf 实现基于任务的异步模式。该方法包括存储过程的执行和对它得到的数据的大量处理。它也会抛出异常

问题是

如何实现

选项 1.

*await command.ExecuteScalarAsync();
//run 10000 lines of processing including exception handling*

选项 2

*await command.ExecuteScalarAsync();
Task.Factory.StartNew(() => run 10000 lines of processing including exception handling);*

还有其他选择吗...?

各有优缺点

此外,如果我已经为该方法实现了同步 - 我应该使用它吗?

最佳答案

选项 1 是更好的选项。但是请务必记录该函数同时具有异步组件和长时间运行的同步组件。

如果您的函数的调用者认为同步组件花费的时间太长并且阻塞了他们的 UI 或类似的,调用者可以决定将调用包装在一个单独的线程中。像您在选项 2 中所做的那样强制代码位于单独的线程中并不能很好地扩展。在您将遇到高负载的情况下,例如 Web 服务器,您可能会通过生成那些额外的不必要的线程来极大地损害性能。

关于c# - wcf 基于任务的异步模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21140127/

相关文章:

c# - 在 C# 中转换 "div"

vb.net - 暴露 WCF 服务无法通过 windows 防火墙检索对象

java - 异步div

c# - 如何安排 TPL 数据流中的流控制?

c# - 将实体连同子实体一起转换为 DTO

c# - 异步等待未在预期线程上执行

c# - 如何对一系列数字使用 FindByValue

c++ - 尝试将 gSoap 与 WCF 和 WSHttpBinding 一起使用

javascript - (原因 : CORS header ‘Access-Control-Allow-Origin’ missing)

unit-testing - Dart,如何使用区域进行单元测试?