title: Best way to convert Stream (of unknown length) to byte array, in .NET?
body: <p>I have the following code to read data from a Stream (in this case, from a named pipe) and into a byte array:</p>
  
  <pre><code>// NPSS is an instance of NamedPipeServerStream
  
  int BytesRead;
  byte[] StreamBuffer = new byte[BUFFER_SIZE]; // size defined elsewhere (less than total possible message size, though)
  MemoryStream MessageStream = new MemoryStream();
  
  do
  {
      BytesRead = NPSS.Read(StreamBuffer, 0, StreamBuffer.Length);
      MessageStream.Write(StreamBuffer, 0, BytesRead);
  } while (!NPSS.IsMessageComplete);
  
  byte[] Message = MessageStream.ToArray(); // final data
  </code></pre>
  
  <p>Could you please take a look and let me know if it can be done more efficiently or neatly? Seems a bit messy as it is, using a MemoryStream. Thanks!</p>