¿Por qué no aguarda en Tarea.Cuando todos lanzan una excepción AggregateException?
En este código:
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();});
}
EsperabaWhenAll
para crear y lanzar unAggregateException
, ya que al menos una de las tareas que estaba esperando lanzó una excepción. En su lugar, estoy recuperando una sola excepción lanzada por una de las tareas.
HaceWhenAll
no siempre crear unAggregateException
?