Windows Service Onstart 存在两个服务的问题

本文关键字:两个 服务 问题 Service Onstart 存在 Windows | 更新日期: 2023-09-27 18:32:53

我在服务库中有 2 个服务,其中有一个 onstart 方法是无限循环(使用 AsyncReadContext 方式完成),但是当启动服务时,它正在启动列表中第一个服务并且永远不会启动第二个服务。一些代码:

           ServiceBase[] ServicesToRun;
            ServicesToRun = new ServiceBase[]
            {
                            new Service1(),
                new Service 2(),
            };
            ServiceBase.Run(ServicesToRun);

启动时间:

 protected override void OnStart(string[] args)
        {
//read MsMQ async way
}
服务

1 正在读取队列,但服务 2 未读取队列。当我将服务 2 更改为列表中的第一个然后服务 2 正在读取队列时,它是相同的代码。在这里,两种服务的队列是不同的。

Windows Service Onstart 存在两个服务的问题

您应该在 OnStart - 方法中启动另一个线程来执行实际工作。

例如,使用匿名方法:

var t = new Thread(new ThreadStart(() => {
   //Actual work here
}));
t.Start();

这会导致 OnStart 方法立即完成,并且还应启动第二个服务。

我的代码中存在问题。两个服务 Service 1 和服务 2,但未由服务安装程序安装。当我更改为serviceIntaller和ServiceInstaller到ProjectInstaller时。我是 1093 错误,服务无法启动,这是因为一旦我更改为服务问题的类名,服务的服务名称就相同。