使用async / await执行多个任务
我正在使用完全异步的API客户端,也就是说,每个操作都返回Task或者Task<T>,例如:
static async Task DoSomething(int siteId, int postId, IBlogClient client){
await client.DeletePost(siteId, postId); // call API client
Console.WriteLine("Deleted post {0}.", siteId);}使用C#5 async / await运算符,启动多个任务并等待它们全部完成的正确/最有效方法是什么:
int[] ids = new[] { 1, 2, 3, 4, 5 };Parallel.ForEach(ids, i => DoSomething(1, i, blogClient).Wait());要么:
int[] ids = new[] { 1, 2, 3, 4, 5 };Task.WaitAll(ids.Select(i => DoSomething(1, i, blogClient)).ToArray());由于API客户端在内部使用HttpClient,我希望这会立即发出5个HTTP请求,并在每个请求完成时写入控制台。
开满天机
翻阅古今
随时随地看视频慕课网APP