puf*_*pio 5 .net asynchronous parallel-extensions
目前,我有一段代码需要对各种数据提供者进行大约7次Web服务调用.每次调用都需要几秒钟才能执行,所以我想并行运行它们以加快速度.
我将7个调用包装在Parallel.Invoke中,它可以同时运行几个东西,但在2核心服务器上,它一次只执行2个,每个核心一个.由于我正在做的就是等待Web服务调用返回,我希望它能够获取所有7并等待它们返回.
有没有办法做到这一点?或许我的方法错了?也许我需要创建对Web服务的异步调用?但那么如何等待他们全部回来再继续前进?
但是在2核服务器上,它一次只能执行2个,每个核心一个
我会质疑这一点 - Parallel.Invoke通常会运行比系统中的核心更多的任务.
话虽这么说,如果您正在使用异步方法调用调用,我建议使用Task.Factory.FromAsync(...)来生成七个不同的任务.
这提供了在任务执行时执行其他工作的灵活性,然后在您决定使用结果时调用Task.WaitAll(或Task.WaitAny).
另一方面,Parallel.Invoke将一直阻塞,直到所有七个完成.
| 归档时间: |
|
| 查看次数: |
2739 次 |
| 最近记录: |