我正在编写一个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;异步执行业务逻辑?