/ / Wyjątki dotyczące wątków puli wątków - c #, wielowątkowość, puli wątków

Wyjątki dotyczące wątków Threadpool - c #, wielowątkowość, threadpool

Związane z:


Jeśli metoda zgłosi wyjątki wywoływane przez metodę ThreadPool.QueueUserWorkItem, to gdzie zostanie zgłoszony wyjątek? czy po prostu zostanie zjedzony?

Mam na myśli, że nigdy nie zostanie rzucony na wątek wywołujący, prawda?


Odpowiedzi:

4 dla odpowiedzi № 1

NIE, wyjątek nigdy nie zostanie przeniesiony na innywątek. W końcu zawiesi wątek i zostanie złapany przez środowisko wykonawcze. W tym momencie środowisko wykonawcze podnosi zdarzenie AppDomain.UnhandledException, w którym można zaobserwować wyjątek.

Możesz przeczytać więcej na ten temat tutaj.


4 dla odpowiedzi nr 2

Wyjątek spowoduje awarię aplikacji, jeśli tak jestnie został złapany w wywołaniu zwrotnym wątku (z wyjątkiem ThreadAbortException i AppDomainUnloadedException, które zostały połknięte). Zauważ, że w .NET 1.1 wszystkie wyjątki zostały połknięte. Zachowanie zostało zmienione w .NET 2.0.

Znalazłem ten link: http://msdn.microsoft.com/en-us/library/ms228965.aspx


1 dla odpowiedzi nr 3

Nieobsługiwane wyjątki spowodują wyłączenie aplikacji w .Net 2.0 lub wyższej. Wyjątek od kodu QUWI nie zostanie przechwycony ani przeniesiony do innego wątku.

Zobacz np. http://www.codinghorror.com/blog/archives/000216.html