我试图在我的便携式类库中同时运行一些异步任务,但是似乎不支持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)任务是并发的,但不平行。