2013-05-12 35 views
0

我有一个WCF服务,它调用4个soap web服务(对于4个服务的总响应时间超过一分钟),最后它会将事务状态记录在SQL 2008数据库中。我第一次使用后台工作,它工作正常,直到30个电话,如果我们增加音量超过30个电话然后Backgroundworker进程取消。现在我正在考虑使用多线程。可以给我一些建议,这是针对我的情况的最好的asnyc方法。从REST服务到外部soap web服务进行多个asyn调用的最佳方式

+0

没有代码示例,就无法回答。当你使用'BackgroundWorker'时你正在使用多线程,并且没有理由限制它的30个实例。在你改变设计之前,我会先确定你没有错误。 – jugg1es 2013-05-12 05:15:34

+0

我没有任何错误,但是当通话次数增加到30以上时,就会出现问题。有时它只处理60个呼叫中的36个呼叫,有时它处理来自相同60个呼叫的47个呼叫。 – 2013-05-13 19:03:52

回答

1

当你有这么多的并发操作时,切换到异步IO是有意义的。有多种型号可供选择。最好的与TPL结合显然是异步等待。我鼓励你看看它。

BackgroundWorker给你带来麻烦的原因是因为同步IO使用线程,并且经常会遇到一些非确定性限制。

在任何情况下,抛弃基于线程的解决方案,因为它们在高并行性方面有困难。