如何能让Windows Service有界面可以查看输出信息?

解决方案 »

  1.   


    //首先可以编写一个特殊的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);
      

  2.   

    q107770540:那windows服务中应该做些什么和窗体想关联,因为服务是没有GUI的啊,请指教,谢谢
      

  3.   

    webService仅仅是提供服务,网上有关于如何使用Webservice制作一个天气预报的Form。你可以看看。
      

  4.   

    是windows service 不是 webservice啊
      

  5.   

    程序中修改注册表(注意一定要重启计算机生效)
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\你的服务简称
    Type= 1 原值(不交互)
    257 新值(交互模式,原值+256,默认为16进制计算)
    注意:16进制计算时 + 100
          10进制计算时 + 256
      

  6.   

    在 OnStart 时,用另一线程加载窗体,并显示。
    安装了Windows服务后,右键服务-属性,“与桌面交互”打上勾,再启动服务。就能看到窗口了
      

  7.   

    cja03:那显示的信息该如何传入窗体上显示呢?通过什么方式?
      

  8.   


    调用 form.XXX()  要注意跨线程问题
    最方便的就是把所有逻辑写到Form,WindowsService只是负责运行并显示窗体