private void Receive(object o) { try { while (used) { BaseNetObject baseNetObject = NetBaseTool.ReceiveBaseNetObject(socket); if (baseNetObject is HeartBeat) { receiveHeartBeat = true; Logger.WriteLog("receive heartbeat confirm alive"); if (!useHeartBeat) { SendBaseNetObjects.Enqueue(new HeartBeat()); } } else { ReceiveBaseNetObjects.Enqueue(baseNetObject); } Thread.Sleep(DELAY); } } catch (SocketException e) { if (t != null) { t.Stop(); } Logger.WriteException(e, "心跳中断"); used = false; return; } }