Как правильно завершить поток сервера? - C#
Формулировка задачи:
{
Listener = new TcpListener(Settings.ip, Settings.port); // Создаем "слушателя" для указанного порта
Listener.Start(); // Запускаем его
Settings.state = "Включен";
// В бесконечном цикле
while (true)
{
// Принимаем нового клиента
TcpClient Client = Listener.AcceptTcpClient();
// Создаем поток
Thread Thread = new Thread(new ParameterizedThreadStart(ClientThread));
// И запускаем этот поток, передавая ему принятого клиента
Thread.Start(Client);
}Решение задачи: «Как правильно завершить поток сервера?»
textual
Листинг программы
static TcpListener listener = new TcpListener(IPAddress.Parse("127.0.0.1"), 8005);
void start(int a)
{
Thread clientThread = new Thread(new ThreadStart(startS));
if (a == 1)
{
clientThread.Start();
}
else
{
clientThread.Abort();
listener.Stop();
}
}
void startS()
{
try
{
listener.Start();
//listBox1.Items.Add("Ожидание подключений...");
while (true)
{
TcpClient client = listener.AcceptTcpClient();
ClientObject clientObject = new ClientObject(client);
Thread clientThread = new Thread(new ThreadStart(clientObject.Process));
clientThread.Start();
}
}
catch //(Exception ex)
{
//listBox1.Items.Add(ex.Message);
}
finally
{
if (listener != null)
listener.Stop();
}
}