Windows Service Onstart提供两种服务

时间:2012-05-01 16:26:48

标签: c# .net service windows-services

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

           ServiceBase[] ServicesToRun;

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

            ServiceBase.Run(ServicesToRun);

ONSTART:

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

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

2 个答案:

答案 0 :(得分:2)

你应该启动OnStart中的另一个线程 - 该方法可以完成实际的工作。

例如使用匿名方法:

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

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

答案 1 :(得分:0)

我的代码中存在问题。两个服务Service1和service 2,而不是由serviceinstaller安装。当我将serviceIntaller和ServiceInstaller更改为ProjectInstaller时。我是1093错误,服务无法启动,因为一旦我更改为服务问题的类名解析,服务的服务名称是相同的。