public static bool ReadFromPipe(NamedPipeServerStream pipe, out PipeMessage msg) { msg = null; byte[] bufferMsgHdr = new byte[PipeMessageHeader.Size]; if (pipe.Read(bufferMsgHdr, 0, PipeMessageHeader.Size) != 0) { var hdr = (PipeMessageHeader)GeneralHelper.DeSerializeObj(bufferMsgHdr, typeof(PipeMessageHeader)); //check for data byte[] bufferData = null; if (hdr.DataSize != 0) { bufferData = new byte[hdr.DataSize]; pipe.Read(bufferData, 0, bufferData.Length); } msg = new PipeMessage(hdr, bufferData); return(true); } else { return(false); } }