I was using this code to redirect my console output to file and then read and display it. I want to go away from using files because I'm polluting my folders with those console files. How can I do this in memory ? I don't want any files to pollute the system. Maybe I'm trying something weird here. **I just want 1 thread to read the console output** of the very same application:

* 1 application
* multiple threads write to console
* 1 thread reads from console

**My working file code:**

```
private StreamWriter currentOut = null;

private void RedirectConsole()
{
    currentOut = new StreamWriter(new FileStream(filename,
        FileMode.Create, FileAccess.Write, FileShare.Read));
    currentOut.AutoFlush = true;
    Console.SetOut(currentOut);
    ThreadPool.QueueUserWorkItem(o => { Listen(); });
}

private void Listen()
{
    StreamReader fileIn = new StreamReader(new FileStream(filename,
        FileMode.Open, FileAccess.Read, FileShare.ReadWrite));
    while (true)
    {
        try
        {
            if (!fileIn.EndOfStream)
            {
                string a = fileIn.ReadLine();
                MessageBox.Show(a);
            }
            Thread.Sleep(25);
        }
        catch { }
    }
}

```

[This](https://stackoverflow.com/questions/2466647/redirecting-console-to-a-string-in-a-net-program) seems to be what I want. But I'm unable to implement that (help?). File is like a buffer. You write to it from one end and read from another. I need the same in memory.