Не получается убить поток сервера - C#

Узнай цену своей работы

Формулировка задачи:

Есть многопоточный сервер (со следующим кодом - ничего умнее метки в одном месте придумать не смог, так что сильно не бейте):
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;
        }
ProcessClient - метод, обрабатывающий клиента. Запуск потока:
Thread ServerThread = new Thread(ServerWork);
                    ServerThread.Start();
Остановка потока:
ServerThread.Abort();
Работа сервера без ошибок, но при вызове аборта потока - ничего не происходит, в обработчик исключения ThreadAbortException никто не заходит, естественно после запуска сервера по новой вылетает, что нельзя юзать на одном порту больше одного сервера. Почему не удается так убить поток? И как это делать в данном случае? Очень надеюсь на Вашу помощь

Решение задачи: «Не получается убить поток сервера»

textual
Листинг программы
Thread ServerThread = new Thread(ServerWork);
                    ServerThread.Start();
                    ServerThread.IsBackground = true;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.182 из 5
Похожие ответы