public void Receive() { if (Sock != null || Sock.Connected) { var args = SocketHelpers.AcquireSocketArg(); var offset = 0; //_offset + _remainingLength; args.SetBuffer(_bufferSegment.Buffer.Array, _bufferSegment.Offset + offset, sizeBuffer - offset); args.UserToken = this; args.Completed += ReceiveAsyncComplete; var willRaiseEvent = Sock.ReceiveAsync(args); if (!willRaiseEvent) { ProcessRecieve(args); } } }