将Console输出到TextWriter中的方法

 

1. Console输出绑定到TextWriter

需要用到Console的关键属性SetOutSetOut要求参数TextWriter,所以Write的信息都会被写入此TextWriter中。我使用StringWriter,它可以绑定到一个StringBilder

 

StringBuilder outSb=newStringBuilder();

StringWriter Sw=new StringWriter(outSb);

Console.SetOut(Sw);

Console.WriteLine(“Console Test!”);

textBox1.Text=outSb.ToString;

 

这样textBox1就能显示Console Write的信息了。但是,这还只能在TextBox中显示以前Console.Write的信息。

 

2.即时显示Console.Write的信息

 这里用一个线程来监视,即时显示Console.Write()的信息。每500毫秒刷新一次。

System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(ConsoleOut));

Void ConsoleOut(object ObjState)

{

   while(true)

   {

       textBox1.Text=outSb.ToString;

       Thread.Sleep(500)

}

}

 

3.但是这样,StringWriter会跟随Write的信息不断增加,这样就需要限制StringWriter的大小。但是StringWriter没有属性来控制其它大小,只能通过绑定它的StringBuilder来控制其大小。

System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(ConsoleOut));

Void ConsoleOut(object ObjState)

{

   while(true)

   {

       int i=outSb.Length;

       if(i>1024000)//当尺寸超过1M时将其清空

{

 outSb.Remove(0,i);

        }

          textBox1.Text=outSb.ToString;

 

      Thread.Sleep(500)

}

}

 

posted on 2009-05-26 22:41  fredli2005  阅读(1512)  评论(0)    收藏  举报

导航