2017-09-14 56 views
0

我有一個parallel.foreach和異步組合的問題。 這裏是我的代碼 -C# - Parallel.ForEach和異步組合

new Thread(() =>{ 
    //doing some stuff here 
    Parallel.ForEach(.....,ParallelOption,async(j,loopState) => 
    { 
     //await some stuff here like: 
     // HttpResponseMessage res = await httpClient.GetAsync(url); 
     // UpdateUI 
    } 
}).Start(); 

現在,我的問題是我如何能確保循環已完成了所有的工作?它只是在幾秒鐘內結束,但UIUpdateing將繼續更多時間。 如何等待await httpClient.GetAsync(url)完成並更新UI?

+0

你是說他們不同步? –

+0

@AsthaSrivastava,他說'Parallel.ForEach'在循環體開始的所有任務都有機會完成之前完成。這是一個衆所周知的問題。 'Parallel.ForEach'不是用來處理'async'委託。 –

+0

@KirillShlenskiy,你有什麼想法我該怎麼做?不管怎樣還是別的東西?謝謝。 – Mahdi

回答

2

Using async/await for multiple tasks

return Task.WhenAll(ids.Select(i => DoSomething(1, i, blogClient))); 

我不知道什麼是在您的實際循環代碼。如果你放更多,我可以做出更具體的。基本上雖然你使用WhenAll來等待所有的ascnc任務f