C#Windows服务程序编写

C#Windows服务程序编写是如何实现的呢?

C#Windows服务程序编写是一种比较高级的编程技术,内部使用了很多Windows操作系统的核心功能,但微软.NET框架已经很好的封装了这些技术细节,使得我们可以很方便的使用C#编写自己的Windows服务,其基本过程一般为

Windows服务程序编写1.创建C#工程。

创建一个EXE工程,可以是WinForm或者命令行格式的。添加对System.ServiceProcess.dll和System.Configuration.Install.dll的引用。

Windows服务程序编写2.创建服务类。

新增一个类,该类型继承System.ServiceProcess.ServiceBase类型,在构造函数中设置ServiceName属性来指明该服务的名称。然后重载它的OnStart方法来响应启动服务的事件,重载OnStop方法来响应停止服务的事件,重载OnPause方法来响应暂停服务的事件,重载OnContinue方法来响应恢复提供服务的事件。在重载这些方法时必须要立即返回,其中不能出现长时间的操作,若处理时间过长则Windows服务管理器会觉得该Windows服务停止响应而报错。为此我们可以使用一个线程来进行实际的工作,而OnStart方法创建线程,OnStop方法关闭线程,OnPause方法挂起线程,而OnContinue方法来恢复运行线程。

Windows服务程序编写3.启动服务。

在main函数中调用“System.ServiceProcess.ServiceBase.Run( 自定义服务类的实例 )”来运行服务。比如“System.ServiceProcess.ServiceBase.Run( new MyService() )”,这里的MyService就是继承自ServiceBase。

Windows服务程序编写4.安装服务。

新增一个类,该类型继承自System.Configuration.Install.Installer类型,该类型用于配合微软.NET框架自带的安装命令行工具InstallUtil.exe的。我们为该类型附加System.ComponentModel.RunInstallerAttribute特性,并在它的构造函数中使用System.ServiceProcess.ServiceInstaller对象和System.ServiceProcess.ServiceProcessInstaller对象向系统提供该服务的安装信息。程序编译后我们可以使用命令行“InstallUtil.exe EXE文件名”向Windows服务管理器注册服务,可以使用命令行“InstallUtil.exe /u EXE文件名”从Windows服务管理器中注销服务。

Windows服务程序编写5.编写服务客户端。

这是一个根据实际情况而可选的过程,由于Windows服务是没有用户界面的,因此我们可以编写一个具有用户界面的程序来显示和控制Windows服务提供的数据,并进行一些系统设置等操作。比如对于MS SQL Server,数据库引擎是以服务的形式存在,而SQL Server企业管理器就是一个客户端软件。

C# Windows服务程序编写的基本步骤就向你介绍到这里,希望对你了解和学习C# Windows服务程序编写有所帮助。

01.在很多应用中需要做windows服务来操作数据库等操作,比如
02.(1)一些非常慢的数据库操作,不想一次性去做,想慢慢的通过服务定时去做,比如定时为数据库备份等
03.(2)在.net Remoting中利用windows服务来做Host
04.
01.在很多应用中需要做windows服务来操作数据库等操作,比如
02.(1)一些非常慢的数据库操作,不想一次性去做,想慢慢的通过服务定时去做,比如定时为数据库备份等
03.(2)在.net Remoting中利用windows服务来做Host
04.
05.利用vs.net我们可以在几分钟之内建立其windows服务,非常简单
06.
07.下面说一下步骤
08.1. 新建一个项目
09.2. 从一个可用的项目模板列表当中选择Windows服务
10.3. 设计器会以设计模式打开
11.4. 从工具箱的组件表当中拖动一个Timer对象到这个设计表面上 (注意: 要确保是从组件列表而不是从Windows窗体列表当中使用Timer)
12.5. 设置Timer属性,Interval属性200毫秒(1秒进行5次数据库操作)
13.6. 然后为这个服务填加功能
14.7.双击这个Timer,然后在里面写一些数据库操作的代码,比如
15.SqlConnection conn=new SqlConnection("server=127.0.0.1;database=test;uid=sa;pwd=275280");
16. SqlCommand comm=-new SqlCommand("insert into tb1 ('111',11)",conn);
17. conn.Open();
18. comm.ExecuteNonQuery();
19. conn.Close();
20.8. 将这个服务程序切换到设计视图
21.9. 右击设计视图选择“添加安装程序”
22.10. 切换到刚被添加的ProjectInstaller的设计视图
23.11. 设置serviceInstaller1组件的属性:
24. 1) ServiceName = My Sample Service
25. 2) StartType = Automatic (开机自动运行)
26.12. 设置serviceProcessInstaller1组件的属性 Account = LocalSystem
27.13. 改变路径到你项目所在的bin\Debug文件夹位置(如果你以Release模式编译则在bin\Release文件夹)
28.14. 执行命令“InstallUtil MyWindowsService.exe”注册这个服务,使它建立一个合适的注册项。(InstallUtil这个程序在WINDOWS文件夹\Microsoft.NET\Framework\v1.1.4322下面)
29.15. 右击桌面上“我的电脑”,选择“管理”就可以打计算机管理控制台
30.16. 在“服务和应用程序”里面的“服务”部分里,你可以发现你的Windows服务已经包含在服务列表当中了
31.17. 右击你的服务选择启动就可以启动你的服务了
在很多应用中需要做windows服务来操作数据库等操作,比如
(1)一些非常慢的数据库操作,不想一次性去做,想慢慢的通过服务定时去做,比如定时为数据库备份等
(2)在.net Remoting中利用windows服务来做Host

利用vs.net我们可以在几分钟之内建立其windows服务,非常简单

下面说一下步骤
1. 新建一个项目
2. 从一个可用的项目模板列表当中选择Windows服务
3. 设计器会以设计模式打开
4. 从工具箱的组件表当中拖动一个Timer对象到这个设计表面上 (注意: 要确保是从组件列表而不是从Windows窗体列表当中使用Timer)
5. 设置Timer属性,Interval属性200毫秒(1秒进行5次数据库操作)
6. 然后为这个服务填加功能
7.双击这个Timer,然后在里面写一些数据库操作的代码,比如
SqlConnection conn=new SqlConnection("server=127.0.0.1;database=test;uid=sa;pwd=275280");
SqlCommand comm=-new SqlCommand("insert into tb1 ('111',11)",conn);
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
8. 将这个服务程序切换到设计视图
9. 右击设计视图选择“添加安装程序”
10. 切换到刚被添加的ProjectInstaller的设计视图
11. 设置serviceInstaller1组件的属性:
1) ServiceName = My Sample Service
2) StartType = Automatic (开机自动运行)
12. 设置serviceProcessInstaller1组件的属性 Account = LocalSystem
13. 改变路径到你项目所在的bin\Debug文件夹位置(如果你以Release模式编译则在bin\Release文件夹)
14. 执行命令“InstallUtil MyWindowsService.exe”注册这个服务,使它建立一个合适的注册项。(InstallUtil这个程序在WINDOWS文件夹\Microsoft.NET\Framework\v1.1.4322下面)
15. 右击桌面上“我的电脑”,选择“管理”就可以打计算机管理控制台
16. 在“服务和应用程序”里面的“服务”部分里,你可以发现你的Windows服务已经包含在服务列表当中了
17. 右击你的服务选择启动就可以启动你的服务了

-----------------------------------------------------------------------------------------------------------

view plaincopy to clipboardprint?
01.1.在VS.NET2003中新建一个WINDOWS服务程序的项目WinSrv_A。
02. 2.更改SERVICE1.CS属性SERVICENAME为你所要建立的服务名称,在服务管理器->名称中你可以看到你的服务名
03. 3.按F7进入代码窗口,里面有2个重载函数是你要在其中写代码的一个是
04. //protected override void OnStart(string[] args)
05. //{...} //这个函数是你启动服务后执行的函数
06. //protected override void OnStop()
07. //{...}//这个函数是你停止服务后执行的函数
08.
09.
10. 我这里简单的做一个记录启动和终止服务的时间的功能。写如日志文档。
11.
12. protected override void OnStart(string[] args)
13. {
14. // TODO: 在此处添加代码以启动服务。
15. String s = System.DateTime.Now.ToString();
16. if(!File.Exists("c:\\srvlog.txt"))
17. {
18. StreamWriter sr = File.CreateText("c:\\bbbirdlog.txt");
19. sr.WriteLine("-------------------------START SRV---------------------");
20. sr.WriteLine ("我的新服务在{0}时间开始",s);
21. sr.WriteLine ("我可以写整型 {0} or 浮点型 {1},等等.",1, 4.2);
22. sr.Close();
23. }
24. else
25. {
26. StreamWriter sr = File.AppendText("c:\\bbbirdlog.txt");
27. sr.WriteLine("-------------------------START SRV---------------------");
28. sr.WriteLine ("我的新服务在{0}时间开始",s);
29. sr.WriteLine ("我可以写整型 {0} or 浮点型 {1},等等.",1, 4.2);
30. sr.Close();
31. }
32. }
33.
34. /// <summary>
35. /// 停止此服务。
36. /// </summary>
37. protected override void OnStop()
38. {
39. // TODO: 在此处添加代码以执行停止服务所需的关闭操作。
40. String s1 = System.DateTime.Now.ToString();
41. if(!File.Exists("c:\\srvlog.txt"))
42. {
43. StreamWriter sr = File.CreateText("c:\\bbbirdlog.txt");
44. sr.WriteLine("-------------------------STOP SRV---------------------");
45. sr.WriteLine ("我的新服务在{0}时间停止",s1);
46. sr.Close();
47. }
48. else
49. {
50. StreamWriter sr = File.AppendText("c:\\bbbirdlog.txt");
51. sr.WriteLine("-------------------------STOP SRV---------------------");
52. sr.WriteLine ("我的新服务在{0}时间停止",s1);
53. sr.Close();
54. }
55. }
56.
57. 4.回到设计窗口点右键选择添加安装程序生成serviceInstaller1和serviceProcessInstaller1两个组件
58. 把serviceInstaller1的属性ServiceName改写为你的服务程序名,并把启动模式设置为AUTOMATIC
59. 把serviceProcessInstaller1的属性account改写为LocalSystem
60. 5.编译链接生成服务程序。
61. 6.用.net framework工具INSTALLUTIL安装服务程序即可。

在很多应用中需要做windows服务来操作数据库等操作,比如
(1)一些非常慢的数据库操作,不想一次性去做,想慢慢的通过服务定时去做,比如定时为数据库备份等
(2)在.net Remoting中利用windows服务来做Host

利用vs.net我们可以在几分钟之内建立其windows服务,非常简单

下面说一下步骤
1. 新建一个项目
2. 从一个可用的项目模板列表当中选择Windows服务
3. 设计器会以设计模式打开
4. 从工具箱的组件表当中拖动一个Timer对象到这个设计表面上 (注意: 要确保是从组件列表而不是从Windows窗体列表当中使用Timer)
5. 设置Timer属性,Interval属性200毫秒(1秒进行5次数据库操作)
6. 然后为这个服务填加功能
7.双击这个Timer,然后在里面写一些数据库操作的代码,比如
SqlConnection conn=new SqlConnection("server=127.0.0.1;database=test;uid=sa;pwd=275280");
SqlCommand comm=-new SqlCommand("insert into tb1 ('111',11)",conn);
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
8. 将这个服务程序切换到设计视图
9. 右击设计视图选择“添加安装程序”

from:http://post.blog.hexun.com/imagine18/trackback.aspx?articleid=6056177
10. 切换到刚被添加的ProjectInstaller的设计视图
11. 设置serviceInstaller1组件的属性:
1) ServiceName = My Sample Service
2) StartType = Automatic (开机自动运行)
12. 设置serviceProcessInstaller1组件的属性 Account = LocalSystem
13. 改变路径到你项目所在的bin\Debug文件夹位置(如果你以Release模式编译则在bin\Release文件夹)
14. 执行命令“InstallUtil MyWindowsService.exe”注册这个服务,使它建立一个合适的注册项。(InstallUtil这个程序在WINDOWS文件夹\Microsoft.NET\Framework\v1.1.4322下面)
15. 右击桌面上“我的电脑”,选择“管理”就可以打计算机管理控制台
16. 在“服务和应用程序”里面的“服务”部分里,你可以发现你的Windows服务已经包含在服务列表当中了
17. 右击你的服务选择启动就可以启动你的服务了
看看数据库是不是一秒多了5个记录啊
(InstallUtil/u MyWindowsService.exe删除服务)(来自有问必答网

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值