我写了两个单独的Windows服务都正常运行,现在我想把这两个服务合并成一个,即在MMC中只有一个服务名称,但其中包含了两个服务的功能代码。我按照vs.net中的示例写的,但主服务正常,第二个调用的服务就是不工作,请指教:
// 进程的主入口点
static void Main()
{
System.ServiceProcess.ServiceBase[] ServicesToRun;
// 同一进程中可以运行多个用户服务。若要将
// 另一个服务添加到此进程,请更改下行
// 以创建另一个服务对象。例如,
// ServicesToRun = New System.ServiceProcess.ServiceBase[] {new Service1(), new MySecondUserService()};
//我的代码如下
ServicesToRun = new System.ServiceProcess.ServiceBase[] { new Publish_Index(),new Hmg.WinService.Send_Mail()};
System.ServiceProcess.ServiceBase.Run(ServicesToRun);
}

解决方案 »

  1.   

    你应该还是有两个service,而不是一个service,System.ServiceProcess.ServiceBase.Run(ServicesToRun);只会将service加载到内存中,并不会真正就开始执行service,只有在srvice被启动后,才会执行service的OnStart.解决办法:
    1.仍然保持两个service.
    2.将第二个service改写为普通的class,在第一个service的OnStart中启动第二个service中你想执行的动作.
      

  2.   

    现在我这样做:在一个service中放两个timer控件,一个30分钟执行一次;另一个5分钟执行一次,现在问题是第一次启动服务时两个任务都能执行,但第二个timer的Elapsed事件怎么也不执行。是不是一个service中不能使用两个timer或是其它是什么原因?请教。
      

  3.   

    不是的。我在使用Timer的时候也遇到过类似的问题,timer死活不起作用。你可以试试windows计划任务
      

  4.   

    还是没弄得太懂,咋就不能多个服务集合成一个呢?最终用一个服务里放多个timer控件实现。