Hey
.
Om maar met de deur in huis te vallen: is het mogelijk om meerdere tasks in parallel te awaiten? Neem nu dit simpel voorbeeld:
Dit werkt perfect. Het blockt de UI thread niet en de WriteLine functie wordt aangeroepen in de UI thread. Allemaal mooi, maar het probleem is dat het awaiten in die foreach loop niet in parallel gebeurd. Ik dacht dat indien de eerste task nog niet klaar was, hij direct naar de tweede task zou gaan enz. Ik zou een Parallel.ForEach loop kunnen gebruiken of een de thread pool maar dan moet ik terug beginnen invoken enzo voor zover ik weet.
Weet iemand of (en hoe) dit kan opgelost worden in Async CTP (zonder dus terug te moeten vallen op de oude manier (invoke))? Alvast bedankt.
Om maar met de deur in huis te vallen: is het mogelijk om meerdere tasks in parallel te awaiten? Neem nu dit simpel voorbeeld:
C#:
1
2
3
4
5
6
7
8
9
| public async void PrintAllPagesAsync(string[] urls) { IEnumerable<Task<string>> tasks = urls.Select(url => DownloadPageAsync(url)); foreach (Task<string> task in tasks) { Console.WriteLine(await task); } } |
Dit werkt perfect. Het blockt de UI thread niet en de WriteLine functie wordt aangeroepen in de UI thread. Allemaal mooi, maar het probleem is dat het awaiten in die foreach loop niet in parallel gebeurd. Ik dacht dat indien de eerste task nog niet klaar was, hij direct naar de tweede task zou gaan enz. Ik zou een Parallel.ForEach loop kunnen gebruiken of een de thread pool maar dan moet ik terug beginnen invoken enzo voor zover ik weet.
Weet iemand of (en hoe) dit kan opgelost worden in Async CTP (zonder dus terug te moeten vallen op de oude manier (invoke))? Alvast bedankt.
Asus P8P67 EVO | i5 2500k (4.8 GHz) | Sapphire HD 7970 Vapor-X GHz Ed. | 8 GB DDR3 1600 | 1 TB HDD