【问题标题】:Windows Service Onstart issues with two services两个服务的 Windows Service Onstart 问题
【发布时间】:2012-05-01 16:26:47
【问题描述】:

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

【问题讨论】:

    标签: c# .net service windows-services


    【解决方案1】:

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

    例如使用匿名方法:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-29
        • 2010-11-14
        • 2018-08-08
        • 2014-01-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多