C#写一个Windows服务程序,启动多个service的问题
时间:2011-12-17
来源:互联网
需求如下:我希望用c#写一个windows service程序,这个service程序里需要处理几种不同请求。
我的实现:添加一个windows service类型的类maincontroller,修改代码如下
static void main()
{
system.serviceprocess.servicebase[] servicestorun;
// run all user service in this process.
servicestorun = new system.serviceprocess.servicebase[] {
new maincontroller(), // main service
new service1 (),
new service2 (),
new service3 (),
};
system.serviceprocess.servicebase.run(servicestorun);
}
再向项目中添加windows service类型的类service1, service2, service3。查看代码可以发现service1,service2,service3大部分和maincontroller相同,但少了main()方法。添加相应代码到service1的onstart()、onstop()方法中,编译成功,然后安装运行该服务。但在查看服务输出时,发现maincontroller运行正常,但service1,service2,service3都没有被自动启动,除非在他们的构造函数里,主动调用onstart()。
我的实现:添加一个windows service类型的类maincontroller,修改代码如下
static void main()
{
system.serviceprocess.servicebase[] servicestorun;
// run all user service in this process.
servicestorun = new system.serviceprocess.servicebase[] {
new maincontroller(), // main service
new service1 (),
new service2 (),
new service3 (),
};
system.serviceprocess.servicebase.run(servicestorun);
}
再向项目中添加windows service类型的类service1, service2, service3。查看代码可以发现service1,service2,service3大部分和maincontroller相同,但少了main()方法。添加相应代码到service1的onstart()、onstop()方法中,编译成功,然后安装运行该服务。但在查看服务输出时,发现maincontroller运行正常,但service1,service2,service3都没有被自动启动,除非在他们的构造函数里,主动调用onstart()。
作者: zfanlong1314 发布时间: 2011-12-17
问题已经解决了。是自己弄错了啊。。。C# 一个安装服务包里面,可以有多个服务文件。
也就是说,一个服务应用程序进程里面,可以有多个服务。
===============================================================
/// <summary>
/// 应用程序的主入口点。
/// </summary>
static void Main()
{
//你也可以根据参数给你的服务运行实例不同的参数来实现不同的功能,而且在一个服务里面.
//你可以设置多个服务运行实例在同一服务内
//ServicesToRun = new ServiceBase[] {new YourService(config1), new YourService(config2)};
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service1()
,new Service2()
};
ServiceBase.Run(ServicesToRun);
}
//
// ProjectInstaller
//
this.Installers.AddRange(new System.Configuration.Install.Installer[] {
this.serviceProcessInstaller1,
this.serviceInstaller1,
this.serviceInstaller2});
以上两句是关键。可以实现一个安装服务里面可以安装多个服务文件。
也就是说,一个服务应用程序进程里面,可以有多个服务。
===============================================================
/// <summary>
/// 应用程序的主入口点。
/// </summary>
static void Main()
{
//你也可以根据参数给你的服务运行实例不同的参数来实现不同的功能,而且在一个服务里面.
//你可以设置多个服务运行实例在同一服务内
//ServicesToRun = new ServiceBase[] {new YourService(config1), new YourService(config2)};
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service1()
,new Service2()
};
ServiceBase.Run(ServicesToRun);
}
//
// ProjectInstaller
//
this.Installers.AddRange(new System.Configuration.Install.Installer[] {
this.serviceProcessInstaller1,
this.serviceInstaller1,
this.serviceInstaller2});
以上两句是关键。可以实现一个安装服务里面可以安装多个服务文件。
作者: zfanlong1314 发布时间: 2011-12-17
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28