title: Why disposing StreamReader makes a stream unreadable?
body: <p>I need to read a stream two times, from start to end.</p>
  
  <p>But the following code throws an <code>ObjectDisposedException: Cannot access a closed file</code> exception.</p>
  
  <pre><code>string fileToReadPath = @"&lt;path here&gt;";
  using (FileStream fs = new FileStream(fileToReadPath, FileMode.Open))
  {
      using (StreamReader reader = new StreamReader(fs))
      {
          string text = reader.ReadToEnd();
          Console.WriteLine(text);
      }
  
      fs.Seek(0, SeekOrigin.Begin); // ObjectDisposedException thrown.
  
      using (StreamReader reader = new StreamReader(fs))
      {
          string text = reader.ReadToEnd();
          Console.WriteLine(text);
      }
  }
  </code></pre>
  
  <p>Why is it happening? What is really disposed? And why manipulating <code>StreamReader</code> affects the associated stream in this way? Isn't it logical to expect that a seekable stream can be read several times, including by several <code>StreamReader</code>s?</p>