title: FIFO/Queue buffer specialising in byte streams
body: <p>Is there any .NET data structure/combination of classes that allows for byte data to be appended to the end of a buffer but all peeks and reads are from the start, shortening the buffer when I read?</p>
  
  <p>The <code>MemoryStream</code> class seems to do part of this, but I need to maintain separate locations for reading and writing, and it doesn't automatically discard the data at the start after it's read.</p>
  
  <p>An answer has been posted in reply to <a href="https://stackoverflow.com/questions/7122972/buffering-byte-data-in-c-sharp">this question</a> which is basically what I'm trying to do but I'd prefer something I can do asynchronous I/O on in different components of the same process, just like a normal pipe or even a network stream (I need to filter/process the data first).</p>