簡體   English   中英

我怎樣才能等到 Parallel.ForEach 完成

[英]How can I wait till the Parallel.ForEach completes

我在當前項目中使用 TPL 並使用 Parallel.Foreach 來旋轉許多線程。 Task 類包含 Wait() 以等待任務完成。 像這樣,我如何等待 Parallel.ForEach 完成然后執行下一條語句?

您不必做任何特別的事情, Parallel.Foreach()將等待其所有分支任務完成。 在調用線程中,您可以將其視為單個同步語句,例如將其包裝在 try/catch 中。

Parallel.Foreach 不需要它:它只在與可用處理器一樣多的線程中執行 foreach,但它會同步返回。

更多信息可以在這里找到

正如這里的每個人所說 - 你不需要等待它。 我可以從我的經驗中補充一點:如果你有一個異步主體要執行並且你在里面等待一些異步調用,它只是通過我的代碼運行並且沒有等待任何東西。 所以我只是用.Result替換了await - 然后它按預期工作。 我不知道為什么會這樣:/

我相信您可以使用 IsCompleted 如下:

if(Parallel.ForEach(files, f => ProcessFiles(f)).IsCompleted)
{
    // DO STUFF                
}         

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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