Zadanie. Gdy wszystko i niezauważone wyjątki
Powiedzmy, że mam trzy zadania,a
, b
, ic
. Wszystkie trzy gwarantują wyjątek w losowym czasie od 1 do 5 sekund. Następnie piszę następujący kod:
await Task.WhenAny(a, b, c);
To ostatecznie wyrzuci wyjątek od tego, które zadanie nie powiedzie się jako pierwsze. Ponieważ nie matry...catch
tutaj ten wyjątek pojawi się w innym miejscu mojego kodu.
Co się stanie, gdy pozostałe dwa zadania rzucą wyjątek? Czy te niezauważone wyjątki nie spowodują śmierci całego procesu? Czy to oznacza, że jedyny sposób korzystaniaWhenAny
jest wewnątrz atry...catch
blok, a następnie jakoś obserwować pozostałe dwa zadania przed kontynuowaniem?
Kontynuacja: Chciałbym, aby odpowiedź miała zastosowanie zarówno do .NET 4.5i .NET 4.0 z pakietem Async Targeting Pack (choć wyraźnie używanyTaskEx.WhenAny
w tym wypadku).