private void ReadCallback(IAsyncResult ar) { if (disconected) { return; } String content = String.Empty; StateObject state = (StateObject)ar.AsyncState; int bytesRead = 0; try { bytesRead = _stream.EndRead(ar); }catch (Exception e) { Console.WriteLine(e.Message); delegatesya(); return; } if (bytesRead > 0) { state.sb.Append(Encoding.ASCII.GetString(state.buffer, 0, bytesRead)); content = state.sb.ToString(); if (content.IndexOf("<EOF>") > -1) { string[] data = content.Split(new[] { "<VUP>" }, StringSplitOptions.None); switch (data[0]) { case "KICKED": disconected = true; delegatekick(); break; case "MUTED": _ConnectWithServerUDP.ServerMute(); delegatemute(); break; case "UNMUTED": _ConnectWithServerUDP.ServerUnMute(); delegateunmute(); break; case "SOUNDOFF": delegatesoundoff(); break; case "SOUNDON": delegatesoundon(); break; case "CHECK": sendMsg("CHECK_Y<VUP><EOF>"); break; case "AKT_USR": lock (_itemsLock) { _collection.Clear(); for (int i = 1; i < data.Length - 1; i++) { if (data[i] == _MyNickAfterConnect) { _collection.Add(new UserInfo(data[i], true)); } else { _collection.Add(new UserInfo(data[i])); } } } break; case "CYA": disconected = true; delegatesya(); break; } } else { _stream.BeginRead(state.buffer, 0, StateObject.BufferSize, new AsyncCallback(ReadCallback), state); } } state.sb.Clear(); if (!disconected) { _stream.BeginRead(state.buffer, 0, StateObject.BufferSize, new AsyncCallback(ReadCallback), state); } }