控制.Net窗口服务时出现的问题

本文关键字:问题 Net 窗口 服务 控制 | 更新日期: 2023-09-27 18:00:16

我有一个运行在windows 2012 R2标准版上的C#窗口服务。我们每天都使用服务控制管理器(SCM)来停止和启动此服务,这在过去一直运行良好。

但最近,我们看到了一种行为:

1.我们需要增加服务的启动和停止功能的超时时间

2.此外,当我们试图停止该服务时,我们看到SCM中该服务的"停止"按钮(以及"启动"按钮)变灰。因此,这迫使我们去找任务管理器,终止该服务并重新启动。

只是想知道这种行为的原因是什么。

显然,这似乎是最近在Service的构造函数中添加以下代码后开始的:

 foreach (Product p in Products)
            {
                Parallel.Invoke(() => {//Call a third part web service1}
        Parallel.Invoke(() => {//Call a third part web service2}
    }   

(这里的产品列表是200)

所以需要知道这个特定的代码更改是否真的是这种行为的原因吗??请告知。

谢谢你的帮助。

控制.Net窗口服务时出现的问题

您的Parallel.Invoke调用似乎毫无意义,您只从invoke中调用了一个操作,这导致您的代码等效于

 foreach (Product p in Products)
 {
        {//Call a third part web service1}
        {//Call a third part web service2}
 } 

你可以理解为什么这可能需要一段时间才能运行。

然而,即使你解决了这个问题,仅仅因为它是平行的并不意味着它很快。不要在构造函数中做繁重的工作,在OnStart中生成一个新线程并在那里完成这项工作。