2014-01-15 48 views
2

我正在为wcf实现基于任务的异步模式。该方法包括存储过程执行和对其获取的数据进行大量处理。除了它抛出一个异常基于任务的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

我不明白你抛出异常的逻辑。为什么? – gleng

+0

例如,因为它试图运行一些存储过程,并没有打开一个连接。我已经解决了这个帖子我的意思是处理包括异常处理以及 – user3027752

+0

什么是等待和异常的问题? – lboshuizen

回答

2

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

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