public void Process() { Stream = tcpClient.GetStream(); Console.WriteLine("Клиент с номером потока {0} - подключился", ThreadNumber); File.AppendAllText(path, "Клиент с номером потока " + ThreadNumber + " - подключился\n"); string oldMessage = null; while (true) { try { if (ClientNumber <= 2) { string newMessage = GetMessage(Stream); if (MessagesInProcces.Any(m => m == newMessage)) { string attention = "Данный запрос уже находится в обработке!"; SendMessage(attention, Stream); if (ClientWithDublet.All(c => c.Item2 != newMessage)) { ClientWithDublet.Add(new Tuple <Client, string>(this, newMessage)); } } else { if (serverIsBusy) { string attention = "Запрос уже обрабатывается!"; SendMessage(attention, Stream); } else { oldMessage = newMessage; ProcessingMessage(oldMessage, Stream); oldMessage = null; } } } else { GetMessage(Stream); SendMessage("Превышен лимит потоков, попробуйте позже", Stream); } } catch (Exception ex) { Console.WriteLine("Клиент с номером потока {0} - отключился", ThreadNumber); File.AppendAllText(path, "Клиент с номером потока " + ThreadNumber + " - отключился\n"); Clients.Remove(this); for (int i = 0; i < Clients.Count; i++) { Clients[i].ClientNumber = i; } return; } } }