public void watekCzytajZSocketa(object id) { long realId = (long)id; TcpClient tcpclient = ((Klient)clientsList[realId]).tcpKlient; while (true) { if (tcpclient.Connected) { try { GameInfo odebranyKom = (GameInfo)bf.Deserialize(tcpclient.GetStream()); GameInfoEventArgs arg = new GameInfoEventArgs(); arg.gi = odebranyKom; arg.connId = realId; Console.WriteLine(odebranyKom); if (KomunikatPrzybyl != null) { KomunikatPrzybyl(this, arg); } } catch (SerializationException) { break; } catch (Exception) { if (!tcpclient.Connected) { break; } } } } lock (clientsList) { clientsList.Remove(realId); } PolaczenieZerwaneEventArgs arg2 = new PolaczenieZerwaneEventArgs(realId); if (PolaczenieZerwane != null) { PolaczenieZerwane(this, arg2); } }
void pol_PolaczenieZerwane(object sender, PolaczenieZerwaneEventArgs e) { AppendColoredText(richTextBox1, "Połączenie o id: " + e.idPolaczenia + " zerwane" + "\n", Color.Red); }
void pol_PolaczenieKlientZerwane(object sender, PolaczenieZerwaneEventArgs e) { AppendColoredText(richTextBox1, "Połączenie klienta o id: " + e.idPolaczenia + " zerwane" + "\n", Color.Red); klientOdlaczAsync(this); //wołana metoda bezpiecznej zmiany na formatce (ponieważ ten wątek nie jest właścicielem formatki). }