基于任务的wcf异步模式

时间:2014-01-15 14:31:38

标签: 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 个答案:

答案 0 :(得分:2)

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

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