如何创建一个独立的exe应用程序的Windows服务?

时间:2009-07-17 10:16:26

标签: c# .net windows-services

我想创建一个控制台exe应用程序,它可以作为独立应用程序以及Windows服务运行。有可能吗?使用svchost实际上有什么好处?

2 个答案:

答案 0 :(得分:14)

重写你的windows服务的主要方法,如果你使用parametr -c运行它将是控制台应用程序,是的,不要忘记从项目的属性窗口将项目类型更改为控制台

 public static void Main(string[] args)
 {
      Service service = new Service();
      if (args.Contains("-c", StringComparer.InvariantCultureIgnoreCase) || args.Contains("-console", StringComparer.InvariantCultureIgnoreCase))
      {
           service.StartService(args);
           Console.ReadLine();
           service.StopService();
           return;
      }
      ServiceBase[] ServicesToRun = new ServiceBase[] 
                                    { 
                                        service 
                                    };
      ServiceBase.Run(ServicesToRun);           
  }

StartService和StopService只调用服务的覆盖OnStart和OnStop方法

答案 1 :(得分:2)

这种情况的最佳方法是考虑组件的概念。

您的策略应该是开发一个包含您需要的所有逻辑的DLL。

之后,您将构建一个使用该DLL的控制台应用程序和Windows服务。

组件的概念和重用它们的可能性是微不足道的,并且是可取的。

当您需要更改逻辑时,您只需更改DLL,然后替换旧的DLL。您不需要任何特殊部署。