Task.WhenAll in PCL



我试图在我的便携式类库中同时运行一些异步任务,但是似乎不支持whewall方法。

我目前的解决方法是启动每个任务,然后等待每个任务:

var task1 = myService.GetData(source1);
var task2 = myService.GetData(source2);
var task3 = myService.GetData(source3);
// Now everything's started, we can await them
var result1 = await task1;
var result1 = await task2;
var result1 = await task3;

我缺少什么吗?我需要做解决方法吗?

我缺少什么吗?

是:microsoft.bcl.async。

安装该软件包后,您可以将TaskEx.WhenAll用作Task.WhenAll的替代品:

var task1 = myService.GetData(source1);
var task2 = myService.GetData(source2);
var task3 = myService.GetData(source3);
// Now everything's started, we can await them
var results = await TaskEx.WhenAll(task1, task2, task3);

P.S。考虑使用术语并行进行(cpu结合)并行处理,以及一词并发一次用于一次以上的事情。在这种情况下,(i/o-bound)任务是并发的,但不平行。

最新更新