0

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

           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 正在读取队列时,它的代码相同。这两种服务的队列是不同的。

4

2 回答 2

2

You should kick off another thread in the OnStart - method which does the actual work.

For example with an anonymous method:

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

This causes the OnStart method to finish right away and should also startup your second service.

于 2012-05-01T16:52:45.097 回答
0

我的代码中有问题。两个服务 Service1 和 service 2 并且不是由 serviceinstaller 安装的。当我更改为 serviceIntaller 和 ServiceInstaller 为 ProjectInstaller。我是 1093 错误并且服务无法启动,这是因为一旦我更改为服务问题的类名,服务的服务名称就相同。

于 2012-05-02T11:26:42.223 回答