zoukankan      html  css  js  c++  java
  • 如何在Windows Service或者Windows Forms输出Console.Write的信息

    我们很多人都喜欢在一些代码中使用Console.Write或者Console.WriteLine的方式输出一些信息,这种做法,如果用到控制台程序中,是很方便的。但是如果用到了Windows Service或者Windows Forms程序中,那么就不是那么好了,因为它们并没有所谓的Console。(如果我们是在Visual Studio中进行调试的话,会输出到一个Output窗口)

    先来看Windows Service的做法。我们可以将这个输出流重定向到一个文件。

                StreamWriter sw = new StreamWriter("e:\\temp\\log.log");
                sw.AutoFlush = true;
                Console.SetOut(sw);
     
    image 
    而在Windows Forms中呢,当然也可以像上面这样做,但是我们可能希望现在在窗体的一个文本框中,看下面的例子
    首先可以编写一个特殊的TextWriter
            public class TextBoxWriter : TextWriter
            {
                TextBoxBase _textbox;
                public TextBoxWriter(TextBoxBase textbox) {
                    _textbox = textbox;
                }
    
                public override Encoding Encoding
                {
                    get { return Encoding.UTF8; }
                }
    
                public override void WriteLine(string value)
                {
                    base.WriteLine(value);
                    _textbox.AppendText(value + Environment.NewLine);
                }
            }

    然后使用该TextWriter来输出消息到窗体的一个文本框中

                TextBoxWriter tw = new TextBoxWriter(richTextBox1);
                Console.SetOut(tw);

    image

    当然,如果仅仅是为了做一些跟踪性的输出,则更推荐使用Trace,结合TraceListener来实现。因为Trace是可以有多个输出的,事实上,确实也有一个ConsoleTraceListener可以输出到屏幕上。

     
     
  • 相关阅读:
    nginx-consul-template
    安装calico
    安装docker
    etcd集群安装
    安装consul-client+registrator
    command not found 的解决&&解释
    安装consul
    RAC环境下SCAN IP可以PING通,1521端口也可以TELNET,但是无法建立数据库连接
    Error starting daemon: error initializing graphdriver: devmapper: Device docker-thinpool is not a thin pool
    nginx+keepalived高可用
  • 原文地址:https://www.cnblogs.com/chenxizhang/p/1716773.html
Copyright © 2011-2022 走看看