Redireccionando la salida de la consola a winforms ListBox

He construido una biblioteca que vuelca la mayor parte de su texto de depuración usando Console.WriteLine ();

Ahora soy el proceso de usar la biblioteca en una aplicación de Windows Forms, y todavía necesito acceso a la salida de la consola. (Para mostrar en una lista / cuadro de texto enriquecido)

Noté que puedo anular el estándar de la consola a un TextWriter, pero cómo podría obtener estos datos en la pantalla.

Traté de hacer algo en la línea de

  public partial class Form1 : Form
  {
    Timer T;
    MemoryStream mem;
    StreamWriter writer; 


    public Form1()
    {

        InitializeComponent();
        mem = new MemoryStream(1000);
        writer = new StreamWriter(mem);
        Console.SetOut(writer);

        T = new Timer();
        T.Interval = 250; // yes this probally is to short.
        T.Tick += new EventHandler(T_Tick);
        T.Start();


        Console.WriteLine("output");
        Console.WriteLine("AnotherLine");
    }

    void T_Tick(object sender, EventArgs e)
    {
        string s = Encoding.Default.GetString(mem.ToArray());
        string[] Lines = s.Split(Environment.NewLine.ToCharArray());
        Output.Items.Clear(); // Output is a listbox 
        foreach (string str in Lines)
            Output.Items.Add(str);
    }
}

pero fue en vano. ¿Algunas ideas?

Código innecesario eliminado.

Respuestas a la pregunta(2)

Su respuesta a la pregunta