/// <summary> /// Force closes connection and stop all threads. /// </summary> public void Stop() { //Send disconnect packets lock (_peers) { for (int i = 0; i < _peers.Count; i++) { var disconnectPacket = _netPacketPool.Get(PacketProperty.Disconnect, 8); FastBitConverter.GetBytes(disconnectPacket.RawData, 1, _peers[i].ConnectId); SendRawAndRecycle(disconnectPacket, _peers[i].EndPoint); } } //Clear ClearPeers(); //Stop if (IsRunning) { _logicThread.Stop(); _socket.Close(); } }
/// <summary> /// Force closes connection and stop all threads. /// </summary> public void Stop() { if (!IsRunning) { return; } IsRunning = false; lock (_peers) { for (int i = 0; i < _peers.Count; i++) { _peers[i].Shutdown(null, 0, 0, true); } _peers.Clear(); } //Stop if (Thread.CurrentThread != _logicThread) { _logicThread.Join(); } _socket.Close(); }