public IEnumerator Process() { lock (NGNetwork.Socket.MBufferQueue) { // NGLogger.LogDebug("Lock BufferQueue"); while (NGNetwork.Socket.MBufferQueue.Count > 0) { //NGLogger.LogDebug("Proceess BufferQueue"); NGBuffer buffer = NGNetwork.Socket.MBufferQueue.Dequeue(); mReceiveCache.AddRange(buffer.Bytes); byte[] currBytes; while ((currBytes = NGMessageCodec.Decode(ref mReceiveCache)) != null) { //NGLogger.LogDebug("Decode message from BufferQueue"); //mReceiveCache.Clear(); //ProcessRecieveData(currBytes); MessageProcessor(currBytes); } } } yield return new WaitForSeconds(2); }