public void watekCzekajNaKlientow() { try { while (true) { Klient kli = new Klient(); kli.tcpKlient = tcpLsn.AcceptTcpClientAbortable(); lock (clientsList) { if (connectId < long.MaxValue - 1) { Interlocked.Increment(ref connectId); } else { connectId = 1; } Console.WriteLine("połączono z: " + kli.tcpKlient.Client.RemoteEndPoint.ToString()); if (clientsList.Count < MaxClients) { while (clientsList.Contains(connectId)) { Interlocked.Increment(ref connectId); } kli.watek = new Thread(new ParameterizedThreadStart(watekCzytajZSocketa)); kli.watek.Name = "wątek czytający z socketa id: " + connectId.ToString(); clientsList.Add(connectId, kli); kli.watek.Start(connectId); PolaczenieUstanowioneEventArgs arg = new PolaczenieUstanowioneEventArgs(connectId, kli.tcpKlient.Client.RemoteEndPoint.ToString()); if (PolaczenieUstanowione != null) { PolaczenieUstanowione(this, arg); } } } } } catch (Exception ex) { Console.WriteLine("Wątek czekający na klientów dostał wyjątkiem: " + ex.Message); } }
void pol_PolaczenieUstanowione(object sender, PolaczenieUstanowioneEventArgs e) { AppendColoredText(richTextBox1, "Połączono z: ", Color.Red); AppendColoredText(richTextBox1, e.adres.ToString() + "\n", Color.Blue); }