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