Mam wątek, który wychodzi i próbuje nawiązać połączenie. W wątku nawiązuję połączenie z biblioteką strony trzeciej. Czasami połączenie to zawiesza się i nigdy nie wraca. W wątku UI chcę móc anulować próbę połączenia, przerywając wątek, który powinien przerwać zawieszone wywołanie do biblioteki strony trzeciej.Jak radzisz sobie z wątkiem, który ma zawieszone połączenie?
Zadzwoniłem do Thread.Abort, ale przeczytałem teraz Thread.Abort działa tylko wtedy, gdy kontrola powraca do zarządzanego kodu. Zauważyłem, że to prawda, ponieważ wątek nigdy się nie kończy, a ja siedzę na Thread.Join przez dziesięć minut. Co powinienem zrobić z tym zawieszonym wątkiem? Czy powinienem po prostu odrzucić odwołanie i przejść dalej? Chciałbym być tak czysty, jak to możliwe -
"Zdejmij i zniszcz witrynę z orbity - to jedyny sposób, by się upewnić". Rzeczywiście masz rację; jest to jedyny gwarantowany bezpieczny sposób na zakończenie nieprawidłowego kodu. Thread.Abort nie ma gwarancji, że faktycznie przerwie niewłaściwie rozwijający się wątek; naprawdę źle zachowana nić może przejąć kontrolę nad przerwaniem. Nawet usunięcie aplikacji nie zawsze robi to, co chcesz. Jeśli absolutnie, pozytywnie musisz zabić źle zachowany kod, musisz go wyizolować do procesu, który można usunąć. –
Dzięki Ripley ... To znaczy ... Eric ;-p (dałbym odpowiedź Hudsona, ale musiałbym wtedy użyć narzędzi moderatora na sobie ...) –