WaitAll vs WhenAll

Yaron Levi picture Yaron Levi · May 25, 2011 · Viewed 98.1k times · Source

What is the difference between Task.WaitAll() and Task.WhenAll() from the Async CTP ? Can you provide some sample code to illustrate the different use cases ?

Answer

Jon Skeet picture Jon Skeet · May 25, 2011

Task.WaitAll blocks the current thread until everything has completed.

Task.WhenAll returns a task which represents the action of waiting until everything has completed.

That means that from an async method, you can use:

await Task.WhenAll(tasks);

... which means your method will continue when everything's completed, but you won't tie up a thread to just hang around until that time.