控制.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)
所以需要知道这个特定的代码更改是否真的是这种行为的原因吗??请告知。
谢谢你的帮助。
您的Parallel.Invoke
调用似乎毫无意义,您只从invoke中调用了一个操作,这导致您的代码等效于
foreach (Product p in Products)
{
{//Call a third part web service1}
{//Call a third part web service2}
}
你可以理解为什么这可能需要一段时间才能运行。
然而,即使你解决了这个问题,仅仅因为它是平行的并不意味着它很快。不要在构造函数中做繁重的工作,在OnStart
中生成一个新线程并在那里完成这项工作。