Dlaczego nie czeka na Task.WhenWszystko rzuca wyjątek AggregateException?

W tym kodzie:

private async void button1_Click(object sender, EventArgs e) {
    try {
        await Task.WhenAll(DoLongThingAsyncEx1(), DoLongThingAsyncEx2());
    }
    catch (Exception ex) {
        // Expect AggregateException, but got InvalidTimeZoneException
    }
}

Task DoLongThingAsyncEx1() {
    return Task.Run(() => { throw new InvalidTimeZoneException(); });
}

Task DoLongThingAsyncEx2() {
    return Task.Run(() => { throw new InvalidOperation();});
}

oczekiwałemWhenAll tworzyć i rzucaćAggregateException, ponieważ przynajmniej jedno z zadań, na które czekało, rzuciło wyjątek. Zamiast tego otrzymuję pojedynczy wyjątek rzucony przez jedno z zadań.

RobiWhenAll nie zawsze tworząAggregateException?

questionAnswers(8)

yourAnswerToTheQuestion