/// <summary> /// Закрывает соединение /// </summary> /// <param name="connect"></param> public override void CloseConnection(IConnectionInfo connect, string sMsg) { try { if (connect == null) { return; } TcpConnectionInfo connectInfo = null; if (connect is TcpConnectionInfo) { connectInfo = (TcpConnectionInfo)connect; } if (connectInfo == null) { return; } if (connectInfo.isClosing) { lock (connections) { connections.Remove(connectInfo); } return; } connectInfo.isClosing = true; if (sessionFactory != null && connectInfo.session != null) { sessionFactory.DestroySession(connectInfo.session); } if (connectInfo.session != null && !connectInfo.session.IsClosed()) { connectInfo.session.CloseHandlers(); } if (connectInfo.socket != null) { connectInfo.socket.Close(); connectInfo.socket = null; } lock (connections) { connections.Remove(connectInfo); } } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка при закрытии соединения"); } }