【问题标题】:task based async pattern for wcfwcf 的基于任务的异步模式
【发布时间】:2014-01-15 14:31:38
【问题描述】:

我正在为 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);*

可能还有其他选择...?

各有优缺点

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

【问题讨论】:

  • 我不明白你抛出异常的逻辑。为什么?
  • 例如,因为它试图运行一些存储过程并且无法打开连接。我已经修复了帖子,我的意思是处理也包括异常处理
  • await 和异常有什么问题?
  • 问题是选项 1/2 的优缺点更好。
  • 使用 await 看起来我的代码只有一部分是异步命令。ExecuteScalarAsync();

标签: c# wcf asynchronous task


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-22
    • 2014-06-19
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 2014-08-27
    • 2012-12-17
    • 1970-01-01
    相关资源
    最近更新 更多