none
请问下,我写了个windows 服务,但调用不执行? RRS feed

  • 问题

  • 我写了个简单的windows service,安装好之后,调用后没有任何的反应,这是怎么回事?代码如下:
      public partial class Servicetest : ServiceBase
      {
        Form1 form = new Form1();
        public Servicetest()
        {
          InitializeComponent();
        }
    
        protected override void OnStart(string[] args)
        {
          // TODO: 在此处添加代码以启动服务。
          form.Show();
        }
    
        protected override void OnStop()
        {
          // TODO: 在此处添加代码以执行停止服务所需的关闭操作。
          form.Dispose();
        }
      }
    
    
    static class Program
      {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        static void Main()
        {
          ServiceBase[] ServicesToRun;
    
          // 同一进程中可以运行多个用户服务。若要将
          // 另一个服务添加到此进程中,请更改下行以
          // 创建另一个服务对象。例如,
          //
          //  ServicesToRun = new ServiceBase[] {new Service1(), new MySecondUserService()};
          //
          ServicesToRun = new ServiceBase[] { new Servicetest() };
    
          ServiceBase.Run(ServicesToRun);
        }
      }
    
    2010年8月23日 2:15

答案

  • 没反应可能是程序不能运行到你的断点,另外 Windows Service 也可以创建 Winform 前提是得勾选中“允许服务与桌面交互”。
    protected override void OnStart(string[] args)
    {
      Thread t = new Thread(new ThreadStart(DoWork));
      t.Start();
    }
    
    /// <summary>
    /// 5 秒显示一个消息提示
    /// </summary>
    void DoWork()
    {
      while (true)
      {
        MessageBox.Show("OK");//断点打在这
        Thread.Sleep(5000);
      }
    }
    


    知识改变命运,奋斗成就人生!
    2010年8月25日 2:31
    版主

全部回复