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可以输出到屏幕上。

     
     
  • 相关阅读:
    top指令
    Trie
    最大公约数
    angular2 获取到的数据无法实时更新的问题
    npm install 的时候出现 write access 导致不能成功安装的问题
    angular 的 @Input、@Output 的一个用法
    windows 安装 apache 服务以及添加 php 解析
    php 性能优化之opcache
    intellij 插件结构(文件结构以及概念层面上的结构)
    jetBrains 插件开发第一课-- 在主菜单栏新增一个菜单
  • 原文地址:https://www.cnblogs.com/chenxizhang/p/1716773.html
Copyright © 2011-2022 走看看