C#创建Windows服务程序浅析

开发 后端
C#创建Windows服务是如何实现的呢?C#创建Windows服务有什么需要注意的地方呢?那么以下的叙述就向你解答这些问题。

C#创建Windows服务程序:

在介绍如何C#创建Windows服务程序以前,我先向大家介绍一下.Net框架下与Windows服务相关的命名空间和其中的类库。.Net框架大大地简化了Windows服务程序的创建和控制过程,这要归功于其命名空间中的功能强大的类库。和Windows服务程序相关的命名空间涉及到以下两个:System.ServiceProcess和System.Diagnostics。

要创建一个最基本的C#创建Windows服务程序图,我们只需要运用.Net框架下的System.ServiceProcess命名空间以及其中的四个类:ServiceBase、ServiceInstaller、ServiceProcessInstaller以及ServiceController,其体系结构可见C#创建Windows服务程序图:

C#创建Windows服务程序图 

其中ServiceBase类定义了一些可被其子类重载的函数,通过这些重载的函数,服务控制管理器就可以控制该Windows服务程序了。这些函数包括:OnStart()、OnStop()、OnPause()以及OnContinue()等四个。而且ServiceBase类的子类还可以重载OnCustomCommand()函数来完成一些特定的操作。通过重载以上的一些函数,我们就完成了一个C#创建Windows服务程序的基本框架,这些函数的重载方法如下:

  1. protected override void OnStart(string[] args)  
  2.  
  3. {  
  4.  
  5. }  
  6.  
  7. protected override void OnStop()  
  8.  
  9. {  
  10.  
  11. }  
  12.  
  13. protected override void OnPause()  
  14.  
  15. {  
  16.  
  17. }  
  18.  
  19. protected override void OnContinue()  
  20.  
  21. {  
  22.  

ServiceBase类还为我们提供了一些属性,而这些属性是任何Widnows服务程序所必须的。其中的ServiceName属性指定了Windows服务的名称,通过该名称系统就可以调用Windows服务了,同时其它应用程序也可以通过该名称来调用它的服务。而CanPauseAndContinue和CanStop属性顾名思义就是允许暂停并恢复和允许停止的意思。

要使得一个C#创建Windows服务程序能够正常运行,我们需要像创建一般应用程序那样为它创建一个程序的入口点。在Windows服务程序中,我们也是在Main()函数中完成这个操作的。首先我们在Main()函数中创建一个Windows服务的实例,该实例应该是ServiceBase类的某个子类的对象,然后我们调用由基类ServiceBase类定义的一个Run()方法。然而Run()方法并不就开始了C#创建Windows服务程序,我们必须通过前面提到的服务控制管理器调用特定的控制功能来完成Windows服务程序的启动,也就是要等到该对象的OnStart()方法被调用时服务才真正开始运行。如果你想在一个Windows服务程序中同时启动多个服务,那么只要在Main()函数中定义多个ServiceBae类的子类的实例对象就可以了,方法就是创建一个ServiceBase类的数组对象,使得其中的每个对象对应于某个我们已预先定义好的服务。

  1. {  
  2.  
  3. System.ServiceProcess.ServiceBase[] MyServices;  
  4.  
  5. MyServices = new   
  6.  
  7. System.ServiceProcess.ServiceBase[] {  
  8.  
  9.  new Service1(), new Service2() };  
  10.  
  11. System.ServiceProcess.ServiceBase.Run(MyServices);  
  12.  
  13. }  
  14.  
  15. static void Main()  

C#创建Windows服务程序的相关就向你介绍到这里,希望对你了解和学习C#创建Windows服务程序有所帮助。

【编辑推荐】

  1. 学习C#构造函数的一点体会
  2. C#复制构造函数的实现实例浅析
  3. C#允许服务与桌面交互实现浅析
  4. C#windows服务中的Timer控件的使用
  5. C#Windows服务介绍
责任编辑:仲衡 来源: vchome.net
相关推荐

2009-08-25 09:39:21

创建C# Window

2009-08-14 16:41:22

C#启动Windows

2009-08-14 16:02:50

C#启动windows

2009-08-14 14:25:09

Windows服务程序

2009-08-14 15:06:08

Windows服务程序

2009-08-14 15:47:18

C#Windows服务

2009-08-14 15:19:38

Windows服务程序Windows服务

2009-08-27 17:31:44

C#创建Windows

2009-09-02 17:28:26

C#程序设计Windows窗体

2009-08-14 14:17:16

C#Windows服务

2009-08-14 17:04:19

Windows后台服务

2009-08-28 16:03:15

C#程序实现鼠标移动

2009-08-19 15:47:09

C#操作Access

2009-08-18 14:25:05

C# 操作Excel

2009-09-02 17:53:42

C#程序设计Windows窗体

2011-06-03 10:15:13

2009-09-07 14:00:57

C#抓取网页

2009-09-07 14:52:01

C# HTTP Req

2009-09-04 17:29:01

C#创建SQL Ser

2009-08-19 15:13:48

C#操作Access
点赞
收藏

51CTO技术栈公众号