[英]How to wait for a database command to complete one iteration before continuing in foreach loop
[英]Await ForEach - How Do I Wait for Each Iteration To Complete?
我有一個URL List<string>
。 我想遍歷每個URL並下載頁面上的內容。 從URL下載內容的方法是異步的。 我想等待每次迭代完成
foreach(string url in urlList)
{
await DownloadPage(url);
}
下載方式:
private async Task DownloadPage(string url)
{
// await Download content using HttpClient
// Save file
}
目前正在發生的事情是,它循環遍歷每個ForEach
而無需等待其完成。
我如何實現一種解決方案,以使其在每次迭代時都等待頁面下載?
除了await
此處使用await
關鍵字之外,您還可以在方法調用上調用.Result
,此任務一定可以解決,您可以從那里立即獲得結果。 您的代碼如下所示:
foreach(string url in urlList)
{
DownloadPage(url).Result;
}
聽起來您需要Task.WaitAll()
方法:
// off the top of my head, syntax not guaranteed to be 100% correct :)
List<Task> tasks = new List<Task>();
foreach(string url in urlList)
{
tasks.Add(Task.Factory.StartNew(DownloadPage));
Task.WaitAll(tasks.ToArray());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.