【发布时间】:2011-08-14 18:26:43
【问题描述】:
我有一个使用 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 服务它正在工作吗?任何帮助将不胜感激,我已经为此苦苦挣扎了好几天!
【问题讨论】:
-
您能否也发布您的
Main和Producer构造函数? -
我没有看到罪魁祸首,我建议按照@Steve Townsend 的建议发布
BatchService的构造函数。你在不应该的地方进行了一些繁重的工作,只需要找到它。