WaitAll vs WhenAll

async-await, asynchronous, c#, task-parallel-library

Solution

`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.

Problem

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?

Original source

Related problems