private void ReceiveData(IAsyncResult result) { if (!Connected) { return; } int dataRead; try { dataRead = mClient.Client.EndReceive(result); } catch { Disconnecting = true; return; } byte[] rawBytes = result.AsyncState as byte[]; byte[] temp = mRawData; mRawData = new byte[dataRead + temp.Length]; Buffer.BlockCopy(temp, 0, mRawData, 0, temp.Length); Buffer.BlockCopy(rawBytes, 0, mRawData, temp.Length, dataRead); BSPacket p; while ((p = BSPacket.ReceivePacket(mRawData, out mRawData)) != null) { mReceiveList.Enqueue(p); } BeginReceive(); }