我知道C#中的Windows服务应用程序提供了OnStart()和OnStop()之类的方法。例如,我说我已经在先前的程序中编写了一个方法,并在服务的方法OnStart()中调用了它:
MyClass.Start();
此方法运行while循环,仅在失败时退出。
问题是,当此内部循环方法在OnStart()方法中执行并且我在Windows中启动服务时,服务报告状态为“正在启动”,并且在一段时间后退出,因此永远不会报告该服务已启动。 / p>
否则,当我的方法快速中断(例如,缺少某些参数)时,服务将报告“正在运行”状态,但该方法已退出。
我的问题是如何对Windows服务进行编程,使其在我的方法运行时报告“正在运行”状态,并在方法退出(异常)时停止该服务?
答案 0 :(得分:0)
这不是它的工作方式。 Windows服务的目的是按特定的间隔运行。您需要添加Timer控件,并在OnStart方法中启用将触发Timer_elapsed事件的控件。在事件处理程序中,您将首先禁用计时器,然后执行主要工作。最后,启用计时器。