如何对Windows Service App进行编程以报告正确的状态?

时间:2019-05-17 13:18:18

标签: c# .net windows service status

我知道C#中的Windows服务应用程序提供了OnStart()和OnStop()之类的方法。例如,我说我已经在先前的程序中编写了一个方法,并在服务的方法OnStart()中调用了它:

MyClass.Start();

此方法运行while循环,仅在失败时退出。

问题是,当此内部循环方法在OnStart()方法中执行并且我在Windows中启动服务时,服务报告状态为“正在启动”,并且在一段时间后退出,因此永远不会报告该服务已启动。 / p>

否则,当我的方法快速中断(例如,缺少某些参数)时,服务将报告“正在运行”状态,但该方法已退出。

我的问题是如何对Windows服务进行编程,使其在我的方法运行时报告“正在运行”状态,并在方法退出(异常)时停止该服务?

1 个答案:

答案 0 :(得分:0)

这不是它的工作方式。 Windows服务的目的是按特定的间隔运行。您需要添加Timer控件,并在OnStart方法中启用将触发Timer_elapsed事件的控件。在事件处理程序中,您将首先禁用计时器,然后执行主要工作。最后,启用计时器。