Chciałem w osobnym wątku na bieżąco sprawdzać aktualność połączeń TCP. Spróbowałem tak:
foreach (DictionaryEntry de in klienci)
{
clientInfo odblisty = (clientInfo)klienci[de.Key];
if (!odblisty.tcpclient.Client.IsBound)
{
kk.RemoveItems(d_lb_listauzytk, de.Key);
klienci.Remove(de.Key);
}
}
I nic, zmieniłem na tak:
foreach (DictionaryEntry de in klienci)
{
clientInfo odblisty = (clientInfo)klienci[de.Key];
if (!odblisty.tcpclient.Client.Connected)
{
kk.RemoveItems(d_lb_listauzytk, de.Key);
klienci.Remove(de.Key);
}
}
I to samo. Tak tego nie idzie zrobić. Jest jakiś bardziej kulturalny sposób na zrobienie tego niż próba wysłania czegoś co jakiś czas do klientów? Raz że to generuje zbędny ruch, dwa że zależy mi na tym żebym wiedział o rozłączeniu klienta zaraz po tym jak się rozłączy.