首页 > 代码库 > 1.Windows服务-->添加一个简单的服务

1.Windows服务-->添加一个简单的服务

  Windows服务应用程序是一种需要长期运行的应用程序,它对于服务器环境特别适合。它没有用户界面,并且也不会产生任何可视输出。任何用户消息都会被 写进Windows事件日志。计算机启动时,服务会自动开始运行。它们不要用户一定登录才运行,它们能在包括这个系统内的任何用户环境下运行。通过服务控 制管理器,Windows服务是可控的,可以终止、暂停及当需要时启动。

 

  1.新建一个Windows服务项目

  

  2.系统自动创建了一个Service1.cs的文件,双击打开Service1.cs文件,在工作区域右键-->属性或者F4可以查看文件属性

  

  

  

  Autolog                 是否自动写入系统的日志文件

  CanHandlePowerEvent     服务时候接受电源事件

  CanPauseAndContinue          服务是否接受暂停或继续运行的请求

  CanShutdown 服务是否在运行它的计算机关闭时收到通知,以便能够调用 OnShutDown 过程

  CanStop                              服务是否接受停止运行的请求

  ServiceName                       服务名称

  3.额,默认的Service1.cs文件名字确实比较不讨人喜欢,因此我们把文件名字修改成TestService(注意是文件名字而不是ServiceName,在上一步中,我已经定义ServiceName为TestService了,当然也可以是其他的)

  

  4.Windows服务的主函数写在Program文件中,让我们来看看它的代码,发现如果我们定义了N多个服务,可以再这里定义到底运行哪个服务。

        /// <summary>        /// 应用程序的主入口点。        /// </summary>        static void Main()        {            ServiceBase[] ServicesToRun;            ServicesToRun = new ServiceBase[]             {                 new TestService()             };            ServiceBase.Run(ServicesToRun);        }
View Code

  5.查看TestService的代码,默认实现了OnStart和OnStop两个方法,以向一个文本中写入数据为例

        public TestService()        {            InitializeComponent();        }        /// <summary>        /// 服务启动了        /// </summary>        protected override void OnStart(string[] args)        {            HGL.Toolkit.IOHelper.FileOperate.WriteFile(@"F:\1.txt", "服务启动了\n");        }        /// <summary>        /// 服务停止了        /// </summary>        protected override void OnStop()        {            HGL.Toolkit.IOHelper.FileOperate.WriteFile(@"F:\1.txt", "服务停止了\n");        }        /// <summary>        /// 系统关闭        /// </summary>        protected override void OnShutdown()        {            HGL.Toolkit.IOHelper.FileOperate.WriteFile(@"F:\1.txt", "系统关闭\n");        }        /// <summary>        /// 服务暂停了        /// </summary>        protected override void OnPause()        {            HGL.Toolkit.IOHelper.FileOperate.WriteFile(@"F:\1.txt", "服务暂停了\n");        }        /// <summary>        /// 服务继续        /// </summary>        protected override void OnContinue()        {            base.OnContinue();        }        /// <summary>        /// 系统电源状态改变        /// </summary>        protected override bool OnPowerEvent(PowerBroadcastStatus powerStatus)        {            return base.OnPowerEvent(powerStatus);        }
View Code

  6.安装服务,切换到 Service1.cs[设计] 界面,右击选择“添加安装程序”。

  这时项目中就添加了一个新类 ProjectInstaller 和两个安装组件 ServiceProcessInstaller 和 ServiceInstaller。

  选中“serviceInstaller1” 控件,F4打开属性面板

   

  Description       服务程序的描述信息

  DisplayName     服务程序显示的名称

  StartType        指定如何启动服务      

                      Manual      服务安装后,必须手动启动

                      Automatic    每次计算机重新启动时,服务都会自动启动

                      Disabled     服务无法启动

  选中“serviceProcessInstaller1” 控件,F4打开属性面板

  

  将serviceProcessInstaller类的Account属性改为 LocalSystem。这样,不论是以哪个用户登录的系统,服务总会启动。

  7.右击项目选择生成即可,Windows服务是不能通过F5进行运行的