private void ClientDisconnect(ClientSocket client) { ShowMessage("ClientDisconnect{" + client.SocketID + "}[" + client.sRemoteIPAndPort + "]"); bool mHasValue = false; lock (mClients) { if (mClients.ContainsKey(client.SocketID)) { mClients.Remove(client.SocketID); mHasValue = true; } } if (mHasValue && OnClientDisconnectEvent != null) { OnClientDisconnectEvent(this, new DisconenctEventArgs(client)); } client.Dispose(); }