任务。当时在PCL中

时间:2014-03-11 23:02:26

标签: c# windows-8.1 portable-class-library

我正在尝试在我的可移植类库中运行一些async tasks concurrently,但似乎不支持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 result1 = await task1;
var result1 = await task2;
var result1 = await task3;

有什么我想念的吗?我是否需要使用解决方法?

1 个答案:

答案 0 :(得分:12)

  

我有什么遗失的吗?

是: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。考虑使用术语 parallel 进行(CPU绑定)并行处理,使用术语并发一次执行多个操作。在这种情况下,(I / O绑定)任务是并发的但不是并行的。