В вашем коде UnhandledException
не запускается ни на одном AppDomain
, потому что если вы вызываете делегата с использованием BeginInvoke()
, любое исключение, которое выдается во время его выполнения, обрабатывается и затем перебрасывается при вызове EndInvoke()
, что вы не делаете.
Если вы позвоните EndInvoke()
:
start.EndInvoke(start.BeginInvoke(null, null));
или выполнить делегат синхронно:
start();
Вы получаете похожие результаты: UnhandledException
основного домена поднято.
Если вместо этого вы делаете то, что написано в документации, и запускаете новый поток, используя класс Thread
:
new Thread(Nested1ThreadStart).Start();
UnhandledException
из Nested1
и основной домен приложения подняты.
Итак, чтобы ответить на ваш вопрос: документация верна. Ваш код неверен. Когда вы вызываете делегат асинхронно, используя BeginInvoke()
, вы всегда должны вызывать EndInvoke()
позже.