可以說我有一個需要異步處理的對象集合。對asyc執行的限制
List<Customer> customers = GetAllCustomers();
customers.ForEach(async (e) => { await e.Process(); });
我認爲這些將被異步處理,而不保留當前線程。我想知道的是,如果有多少客戶可以在集合中有限制。如果它是100,000,它會在異步隊列中排隊嗎?
**我也不確定這是否正確。我並不需要等待每個客戶處理的結果。我只想爲所有人無縫處理客戶數據。我不在乎每個過程是否失敗,因爲它會再次被拿起,直到成功。我可以使用任務,但我寧可不創建線程從而可能導致比賽條件等**
你知道是什麼任務呢? – ilansch
你正在向'Parallel.ForEach'傳遞'async void'lambda'Action'。您應該意識到,執行控制一旦在lambda內部遇到'await',就會立即返回到'Parallel.ForEach',然後它基本上是'Parallel.ForEach'之外的一個繼續調用的調用。可能不是你在找什麼? – Noseratio
只要它擊中每條記錄異步,它應該沒問題。該方法是自給自足的,如果失敗,它將被拿起來再次處理。 –