Task.WaitAll 의 경우 예외가 throw되면 AggregateException을 반환하여 모든 예외를 확인할수 있으나

Task.WhenAll 은 예외중 딱 하나만 throw된다.

구글링 해봐도 먼 각각 예외들을 따로 수집하는걸 직접 만들라는 소리를 하고있는데,

그냥 task.Exception 꺼내보면 잘 모아뒀다.



Parallel.ForAsync

Parallel.ForEachAsync

취소나 일부에 예외가 발생하면 실행대기중이던 나머지는 아예 실행되지 않을수가 있다.

때문에 필수적으로 돌아야 하는 구간과 아닌구간을 쪼개야했다.