void ReceivedCallback(IAsyncResult asyncResult) { try { ReceivedDataLen = Sock.EndReceive(asyncResult); } catch (SocketException) { return; } catch (ObjectDisposedException) { return; } if (ReceivedDataLen <= 0) { EventProvider.ExecuteDisconnectedHandler(IP); Dispose(this); return; } EventProvider.ExecuteReceivedDataHandler(Pack.Clone(), this); Array.Clear(Pack, 0, Pack.Size); Sock.BeginReceive(Pack, 0, Pack.Size, SocketFlags.None, ReceivedCallback, null); }