private void WritePacket() { var serializer = new PacketSerializer(); var type = typeof(Packet); while (Running) { try { if (_msgQueue == null) { return; } var msg = _msgQueue.DequeueWriteMessage(); if (msg != null) { var packet = MessageEncoder.Encode(msg); if (packet != null) { var stream = _tcpClient.GetStream(); serializer.SerializeWithLengthPrefix(stream, packet, type, PrefixStyle.Fixed32BigEndian, 0); stream.Flush(); } } else { Thread.Sleep(DataCheckInterval); } } catch (ObjectDisposedException e) { // 客户端已经被销毁了,需要断开连接。 if (_parent != null) { _parent.Close(); } } catch (IOException e) { // 通信发生错误,需要断开连接。 if (_parent != null) { _parent.Close(); } } catch (Exception e) { // TODO 出错了。 } } }