Не получается убить поток сервера - 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;