【发布时间】:2018-06-05 13:26:24
【问题描述】:
场景 1 - 对于字符串列表 (_websites) 中的每个网站,调用者方法将 GetWebContent 包装到一个任务中,等待所有任务完成并返回结果。
private async Task<string[]> AsyncGetUrlStringFromWebsites()
{
List<Task<string>> tasks = new List<Task<string>>();
foreach (var website in _websites)
{
tasks.Add(Task.Run(() => GetWebsiteContent(website)));
}
var results = await Task.WhenAll(tasks);
return results;
}
private string GetWebContent(string url)
{
var client = new HttpClient();
var content = client.GetStringAsync(url);
return content.Result;
}
场景2 - 对于字符串列表(_websites)中的每个网站,调用者方法调用GetWebContent(返回Task 问题 - 哪种方法是正确的方法,为什么?每种方法对实现异步处理有何影响? private async Task<string[]> AsyncGetUrlStringFromWebsites()
{
List<Task<string>> tasks = new List<Task<string>>();
foreach (var website in _websites)
{
tasks.Add(GetWebContent(website));
}
var results = await Task.WhenAll(tasks);
return results;
}
private async Task<string> GetWebContent(string url)
{
var client = new HttpClient();
var content = await client.GetStringAsync(url);
return content;
}
【问题讨论】:
-
您询问了偏好,这是基于意见的。你应该问为什么第一个不正确而第二个是正确的?是什么让他们如此?
-
@LasseVågsætherKarlsen 我已经更新了问题
标签: c# .net async-await asynchronous