如何使用TPL调用Web服务异步

时间:2013-06-18 02:50:26

标签: c# asynchronous task-parallel-library

我正在编写一个WCF(C#4,VS2010),它调用4种不同的Web服务,执行业务逻辑并将它们转换为应用程序实体。这些ws调用,buss logic&实体转换是相互独立的。平均响应时间约为4秒。

使用TPL异步执行上述操作并没有帮助(在减少响应时间方面,实际id增加了~100ms);下面的伪代码:

Task<Plan> planAsync = Task<Plan>.Factory.StartNew(() => return CallSvcAndGetPlanEntity()); 
Task<Claim> claimAsync = Task<Claim>.Factory.StartNew(() => return CallSvcAndGetClaimEntity()); 
Task<Account> accounAsync = Task<Account>.Factory.StartNew(() => return CallSvcAndGetAccountEntity()); 

//Some business logic here in loop.

Task.WaitAll(planAsync, claimAsync, accountAsync);

Plan p = planAsync.Result;

更新 我在上面的每个CallSvc()方法中引入了一个2Sec的Thread.Sleep。 异步方法的响应时间仍为4.1秒 线性方法的响应时间最多约为7秒。

我错过了什么吗? 什么是最好的方式来调用WS&amp;异步执行业务逻辑?

0 个答案:

没有答案