title: Console.Error and Console.Out not writing on Redirected File Streams
body: <pre><code>namespace Pro
  {
      class ErrorLog
      {
          public ErrorLog(RenderWindow app)
          {
              startTime = DateTime.Now.ToString("yyyyMMddHHmm");
              outFile = @"data\runtime\" + startTime + ".log";
              errFile = @"data\runtime\" + startTime + ".err";
  
              try
              {
                  OutputStream = new StreamWriter(outFile);
                  ErrorStream = new StreamWriter(errFile);
              }
              catch (Exception e)
              {
                  Console.Error.WriteLine(e);
                  MessageBox.Show(e.Message);
                  Environment.Exit(1);
              }
  
              var info = new ComputerInfo();
  
              Console.SetOut(OutputStream);
              Console.SetError(ErrorStream);
              Console.WriteLine("Start Time: {0}", startTime);
              Console.WriteLine("Platform: {0}", info.OSFullName);            
              Console.WriteLine("Available Memory: {0}", info.AvailablePhysicalMemory);
  
              ReportApplicationData(app);
  
          }
  
          ~ErrorLog()
          {
              if (wereErrors)
              {
                  var msg = string.Format("There were some runtime errors. Kindly see {0} for the error messages and {1} for the runtime log",
                      errFile, outFile);
                  DisplayMessage(msg);                
              }
  
              Console.Error.Close();
              Console.Out.Close();
          }
  
          public void ReportApplicationData(RenderWindow app)
          {          
              this.app = app;
  
              Console.WriteLine("Screen Width = {0}, Height = {1}, Depth = {2}",
                  app.Width, app.Height, app.Settings.DepthBits);
          }
  
          public void DisplayMessage(string msg)
          {
              Console.WriteLine("Application Message : '{0}'", msg);
              MessageBox.Show(msg);
          }
  
          public void DisplayError(bool fatal, string format, params object[] arg)
          {
              Console.Error.WriteLine(format, arg);
              wereErrors = true;
  
              if (fatal) app.Close();
          }
  
          public TextWriter ErrorStream
          {
              get;
              private set;
          }
  
          public TextWriter OutputStream
          {
              get;
              set;
          }
  
          bool wereErrors = false;
  
          string startTime;
          string errFile;
          string outFile;
  
          RenderWindow app; // SFML RenderWindow
      }
  }
  </code></pre>
  
  <p>I create an instance of <code>ErrorLog</code> in the <code>Main</code> method. But, for some reason nothing gets written to the <code>.log</code> and <code>.err</code> files even though they are created. All I see is two empty files with a size of 0 bytes, with no text written in them.</p>