我正在尝试在我的可移植类库中运行一些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;
有什么我想念的吗?我是否需要使用解决方法?
答案 0 :(得分:12)
我有什么遗失的吗?
安装该软件包后,您可以使用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绑定)任务是并发的但不是并行的。