【发布时间】:2014-03-19 11:15:07
【问题描述】:
如果窗口服务停止,我想向用户发出通知。如何在 Code Behind(c#) 中获取状态:启动/停止?
【问题讨论】:
如果窗口服务停止,我想向用户发出通知。如何在 Code Behind(c#) 中获取状态:启动/停止?
【问题讨论】:
首先,如果您使用窗口服务,您已经在项目中包含了System.ServiceProcess 的引用。
要获得 Windows 服务的状态,您必须执行以下步骤。
第 1 步: 包含程序集
using System.ServiceProcess;
第 2 步:
创建您的服务
private ServiceController yourService = new ServiceController("yourService");
第 3 步:
if (yourService.Status == ServiceControllerStatus.Running)
this.labelStatus.Text = "Running...";
else if (yourService.Status == ServiceControllerStatus.Stopped)
this.labelStatus.Text = "Stopped.";
else if (yourService.Status == ServiceControllerStatus.StartPending)
this.labelStatus.Text = "Starting...";
else if (yourService.Status == ServiceControllerStatus.StopPending)
this.labelStatus.Text = "Stopping...";
else if (yourService.Status == ServiceControllerStatus.Paused || yourService.Status == ServiceControllerStatus.PausePending)
this.labelStatus.Text = "Pause";
else
this.labelStatus.Text = "Processing";
labelStatus 只是您设置 Windows 服务状态以向用户显示的标签。
这是您可以轻松完成并处理任何类型的 Windows 服务状态的方式。
在这些 if else 块中,你可以根据服务状态做任何你想做的事情。您可以根据窗口服务的启动和停止状态显示打开和关闭图标。
【讨论】:
您可以使用ServiceController 组件连接到现有服务并控制其行为。当您创建 ServiceController 类的实例时,您设置它的属性以便它与特定的 Windows 服务交互。然后,您可以使用该类来启动、停止和以其他方式操作该服务。请参阅here 了解如何添加它和here 了解详细工作。
【讨论】:
试试这个
using System.ServiceProcess;
ServiceController sc = new ServiceController(SERVICENAME);
if (sc.Status == ServiceControllerStatus.Stopped)
{
// do anything
}
【讨论】: