簡體   English   中英

等待每個人-如何等待每個迭代完成?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM