.NET Windows服务表示即使我知道也没有响应';她在跑步

.NET Windows服务表示即使我知道也没有响应';她在跑步,.net,service,.net,Service,我有一个与installutil.exe一起安装的.NET 2.0 windows服务。该服务的功能是一个批处理服务,它遍历输入文件,处理每条记录并保存输出文件。当我在Windows服务中启动该服务时,20秒后它会说该服务没有响应,因此它会停止该服务,但是我可以从输出文件中看到该服务运行良好。 我收到的确切消息是:错误1053:服务没有及时响应启动或控制请求 我用注册表黑客增加了Windows服务超时,但它产生了相同的结果(唯一的区别是接收“无响应”消息需要更长的时间) 我的服务的OnStart

我有一个与installutil.exe一起安装的.NET 2.0 windows服务。该服务的功能是一个批处理服务,它遍历输入文件,处理每条记录并保存输出文件。当我在Windows服务中启动该服务时,20秒后它会说该服务没有响应,因此它会停止该服务,但是我可以从输出文件中看到该服务运行良好。 我收到的确切消息是:错误1053:服务没有及时响应启动或控制请求

我用注册表黑客增加了Windows服务超时,但它产生了相同的结果(唯一的区别是接收“无响应”消息需要更长的时间)

我的服务的OnStart方法如下所示:

protected override void OnStart(string[] args)
{ 
     Producer producer = new Producer();
     ThreadStart st = new ThreadStart(producer.Produce); 
     workerThread = new Thread(st); 
     workerThread.Start();
}

static void Main()  
{
     System.ServiceProcess.ServiceBase[] ServicesToRun;
     ServicesToRun = new System.ServiceProcess.ServiceBase[] { new BatchService() }; 
     System.ServiceProcess.ServiceBase.Run(ServicesToRun); 
}
生产商和建造商:

public Producer()
{
     nMaxConcurentJobs =   int.Parse(ConfigurationManager.AppSettings["MaxConcurentJobs"]); 
     if (ConfigurationManager.AppSettings[TIME_INTERVAL] != null)`  
     {
          sleepTime = int.Parse(ConfigurationManager.AppSettings[TIME_INTERVAL]);
          sleepTime *= 1000;
     } 
}
我是否需要通知windows服务它正在工作??任何帮助都将不胜感激,我已经为此奋斗了好几天了

确保通过让geing生成某种日志输出来调用它

确保您在
ServiceBase
派生的类构造函数中没有做很多工作,
OnStart
是执行繁重工作的地方

如果您的启动逻辑是长期的,您可能必须调用以防止服务控制管理器(SCM)假设您的进程已死亡。当您从
OnStart
返回时,SCM将在服务GUI中将您的服务标记为“正在运行”


设计您的应用程序,使其可以不作为服务运行,以确保多线程启动代码中没有死锁。将适当的诊断输出添加到该逻辑以跟踪其进度。

我在任何地方都看不到有关
Producer.product()
的任何详细信息,但我确实注意到一个名为
sleepTime
的成员。您是否正在使用
Thread.Sleep()
?如果是这样的话,您是否尝试过使用or来代替?

您是否也可以发布您的
Main
Producer
构造函数?我没有看到罪魁祸首,我建议按照@Steve Townsend的建议为您的
BatchService
发布构造函数。你有一些不应该在的地方进行的繁重工作,只需要找到它。我有日志文件,它显示一切正常工作。我发布了我的OnStart方法,如您所见,它所做的只是创建一个新线程。