我正在为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);*
可能有其他选择......?
每个人的利弊
此外,如果我已经为该方法实现了同步 - 我应该使用它吗?
答案 0 :(得分:2)
选项1是更好的选择。但请务必记录该函数同时具有异步组件和长时间运行的同步组件。
如果函数的调用者决定同步组件花费的时间过长并阻塞其UI或类似的,则调用者可以决定将调用包装在单独的线程中。像在选项2中那样强制代码处于单独的线程中不能很好地扩展。在您将遇到高负载的情况下,例如Web服务器,您可以通过生成那些额外不必要的线程来极大地损害性能。