2009-07-17 64 views
3

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

+0

可能的重复 - http://stackoverflow.com/questions/355579/my-exe-runs-fine-by-itself-but-does-nothing-when-loaded-by-a-service&http:// stackoverflow.com/questions/165951/how-can-i-run-a-cli-application-as-a-windows-service – ChrisF 2009-07-17 10:22:32

回答

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方法

+0

+1,我的回答删除:) – 2009-07-17 10:28:24

2

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

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

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

组件的概念和重用它们的可能性是微不足道的,也是很明智的。

当你需要改变你的逻辑时,你只需要改变DLL,并用旧的替换。你不需要任何特殊的部署。

相关问题