Creates a task that will complete successfully when all of the tasks supplied as arguments complete successfully.
template < typename _Iterator > auto when_all( _Iterator_Begin, _Iterator_End, const task_options& _TaskOptions = task_options() ) -> decltype (details::_WhenAllImpl<typename std::iterator_traits<_Iterator>::value_type::result_type, _Iterator>::_Perform(_TaskOptions, _Begin, _End));
when_all is a non-blocking function that produces a task as its result. Unlike task::wait, it is safe to call this function in a Windows Store app on the ASTA (Application STA) thread.
If one of the tasks is canceled or throws an exception, the returned task will complete early, in the canceled state, and the exception, if one is encoutered, will be thrown if you call task::get or task::wait on that task.
For more information, see Task Parallelism (Concurrency Runtime).