文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
C#Windows服务程序开发实例介绍
C#Windows服务程序开发实例程序的目的和用途:
很多开机启动程序仅仅加在启动项里面,只有登陆后才真正启动。windows服务在开机未进行用户登录前就启动了。正是利用这一点,解决一些服务器自动重启后特定软件也自动启动的问题。
C#Windows服务程序开发1.
新建一个服务项目 visual C#----windows----windows服务; C#Windows服务程序开发2.
添加一个dataset(.xsd),用于存储启动目标的路径,日志路径等。 在dataset可视化编辑中,添加一个datatable,包含两列 StartAppPath 和 LogFilePath。分别用于存储目标的路径、日志路径。
我认为利用dataset.xsd存储配置参数的优势在于可以忽略xml解析的具体过程直接使用xml文件。
在dataset中 提供了ReadXml方法用于读取xml文件并将其转换成内存中的一张datatable表,数据很容易取出来!同样,WriteXml方法用于存储为xml格式的文件,也仅仅需要一句话而已。
C#Windows服务程序开发3.
program.cs文件 作为程序入口,代码如下:
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
using ;
using System.ServiceProcess; using System.Text;
namespace WindowsServices_AutoStart {
static class Program {
/// ﹤summary﹥ /// 应用程序的主入口点。 /// ﹤/summary﹥ static void Main() {
ServiceBase[] ServicesToRun;
1
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51.
// 同一进程中可以运行多个用户服务。若要将 // 另一个服务添加到此进程中,请更改下行以 // 创建另一个服务对象。例如, //
// ServicesToRun = new ServiceBase[] { new Service1(), new MySecondUserService()}; //
ServicesToRun = new ServiceBase[] { new WindowsServices_AutoStart() }; ServiceBase.Run(ServicesToRun); } } } using ;
using System.ServiceProcess; using System.Text;
namespace WindowsServices_AutoStart {
static class Program {
/// ﹤summary﹥ /// 应用程序的主入口点。 /// ﹤/summary﹥ static void Main() {
ServiceBase[] ServicesToRun;
// 同一进程中可以运行多个用户服务。若要将 // 另一个服务添加到此进程中,请更改下行以 // 创建另一个服务对象。例如, //
// ServicesToRun = new ServiceBase[] { new Service1(), new MySecondUserService()}; //
ServicesToRun = new ServiceBase[] { new WindowsServices_AutoStart() }; ServiceBase.Run(ServicesToRun); } }
2
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
52.
}
C#Windows服务程序开发4. service.cs主文件,代码如下:
53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86.
view plaincopy to clipboardprint? using System; using ;
using System.ComponentModel; using System.Data; using System.IO;
using System.Diagnostics; using System.ServiceProcess; using System.Text;
namespace WindowsServices_AutoStart {
public partial class
WindowsServices_AutoStart : ServiceBase {
public WindowsServices_AutoStart() {
InitializeComponent(); }
string StartAppPath =\; //@\ string LogFilePath =\;
// @\
protected override void OnStart(string[] args) {
string exePath = System.Threading. Thread.GetDomain().BaseDirectory; //
if (!File.Exists(exePath + @\)) {
dsAppPath ds = new dsAppPath(); object[] obj=new object[2]; obj[0]=\; obj[1]=\;
ds.Tables[\].Rows.Add(obj);
3