我想在窗口服务停止时向用户发出通知。如何获取状态:在Code Behind(c#)中启动/停止?
答案 0 :(得分:0)
您可以使用ServiceController组件连接并控制现有服务的行为。在创建ServiceController类的实例时,可以设置其属性,以便它与特定的Windows服务进行交互。然后,您可以使用该类来启动,停止和以其他方式操纵服务。请参阅here以查看如何添加它,并here进行详细工作。
答案 1 :(得分:0)
试试这个
using System.ServiceProcess;
ServiceController sc = new ServiceController(SERVICENAME);
if (sc.Status == ServiceControllerStatus.Stopped)
{
// do anything
}
答案 2 :(得分:0)
首先,如果您使用的窗口服务已经包含了项目中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块中,您可以根据服务状态执行任何操作。您可以根据窗口服务的开始和停止状态显示图标的开启和关闭。