Я работаю над приложением, которое имеет HttpListener
. Моя цель состоит в том, чтобы пользователь мог включать и выключать прослушиватель по своему выбору. Я поместил Listener в новый поток, и у меня возникла проблема с прерыванием этого потока. Я где-то читал, что если вы попытаетесь прервать поток, который находится в неуправляемом контексте, то, как только он снова войдет в управляемый контекст, ThreadAbortException
будет запущен. Похоже, что метод GetContext()
HttpListener неуправляем, потому что, когда я пытаюсь прервать поток, ничего не происходит, пока я не сделаю веб-запрос к моему приложению. ТОГДА поток выходит. Проблема в том, что когда я пытаюсь убить поток, я могу снова запустить поток позже на том же порту, и HttpListenerException
уходит, говоря, что префикс уже зарегистрирован.
Как я могу убить перекрестный поток HttpListener? Есть ли управляемая альтернатива GetContext()
, которая позволит прервать поток? Могу ли я прервать поток таким образом, чтобы неуправляемый код остановился?