Aşağıdaki parçacık derleniyor, ancak bana bir List<Task<T>>
vermek yerine görev sonucunu beklemesini beklerdim.Bir LINQ ifadesinin içinde async/bekletme kullanıldığında ne olur?
var tasks = foos.Select(async foo => await DoSomethingAsync(foo)).ToList();
await Task.WhenAll(tasks);
Ama a commentSelect()
iç async
ve await
gerekli olmadığını işaret:
var foo = bars.Select(async bar => await Baz(bar)).ToList()
olarak, Task.WhenAll
kullanmak gerekir dışarı here çekti
var tasks = foos.Select(foo => DoSomethingAsync(foo)).ToList();
Benzer bir here sorusu, birisinin içinde bir async yöntemini kullanmaya çalışır. Where()
. Bir LINQ ifadesinin içinde async
ve await
ve ve await
, yasal bir sözdizimidir, ancak hiçbir şey yapmaz mı, yoksa belirli bir kullanımı var mı?
"Önemli bir farklılık yok." - BazAsync eşzamanlı olarak atarsa, async olmayan lambda'yı kullanarak, numaralandırma sırasında ve async lambda'yı kullanarak gerçekleşir, görevler beklenirken gerçekleşir. –
@EliArbel: Evet. Ancak eşzamanlı olarak atanan asenkron bir yöntem çok sıra dışı bir durumdur. Eşzamansız yöntemler * yalnızca * [gizli özel durumlar] durumunda senkronizasyon istisnaları atmalıdır (https://blogs.msdn.microsoft.com/ericlippert/2008/09/10/vexing-exceptions/). Bu yüzden önemli bir kullanım durumu düşünmüyorum. –
reify - https://en.wikipedia.org/wiki/Reification_(computer_science) – BozoJoe