Не получается убить поток сервера - C#
Формулировка задачи:
Есть многопоточный сервер (со следующим кодом - ничего умнее метки в одном месте придумать не смог, так что сильно не бейте):
ProcessClient - метод, обрабатывающий клиента.
Запуск потока:
Остановка потока:
Работа сервера без ошибок, но при вызове аборта потока - ничего не происходит, в обработчик исключения ThreadAbortException никто не заходит, естественно после запуска сервера по новой вылетает, что нельзя юзать на одном порту больше одного сервера.
Почему не удается так убить поток? И как это делать в данном случае?
Очень надеюсь на Вашу помощь
private void ServerWork() { ne: TcpListener Server = new TcpListener(Port); WriteError("Server initialized."); Server.Start(); WriteError("Server started."); WriteError("Server local EP is " + Server.LocalEndpoint.ToString()); try { while (true) { TcpClient Client = Server.AcceptTcpClient(); Thread T = new Thread(ProcessClient); T.Start(Client); } } catch (ThreadAbortException TAE) { WriteError("Process terminated. Shutdown..."); WriteError("Server is stopping..."); Server.Stop(); return; } catch (Exception Ex) { WriteError("an error occured. reason : " + Ex.Message); } finally { WriteError("Server is stopping..."); Server.Stop(); } WriteError("Going at the start..."); goto ne; }
Thread ServerThread = new Thread(ServerWork); ServerThread.Start();
ServerThread.Abort();
Решение задачи: «Не получается убить поток сервера»
textual
Листинг программы
Thread ServerThread = new Thread(ServerWork); ServerThread.Start(); ServerThread.IsBackground = true;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д