C#中ServiceController组件应用实例
ServiceController组件
1.功能
ServiceController组件实际上将操作请求传递给服务控制管理器,而不是传递给服务本身。服务控制管理器停止、启动或暂停服务,或者执行其他指定的操作。ServiceController 将请求传递给服务控制管理器后返回,而不等待服务控制管理器将请求传递给服务。因此,应该在服务类自身而不是在ServiceController类中处理异常。图1所示为Service Controller组件。

图1 ServiceController组件
2.属性
ServiceController组件常用属性及说明如表1所示。

表1 ServiceController组件常用属性及说明
下面对比较重要的属性进行详细介绍。
(1)CanStop属性,该属性用于获取一个值,该值指示服务在启动后是否可以停止。
语法:
public bool CanStop { get;}
属性值:如果服务可以停止则为True;否则为False。
(2)ServiceName属性。获取或设置对此实例引用的服务进行标识的名称。
语法:
public string ServiceName { get; set; }
属性值:对此ServiceController实例引用的服务进行标识的名称。默认值为空字符串("")。
示例
CanStop属性和ServiceName属性的使用
本示例实现的是当程序运行时单击【CanStop属性】按钮,通过CanStop属性的返回值,来判断名为“IISAdmin”的服务是否可以开始或停止,示例运行结果如图2所示。

图2 IISAdmin服务
程序主要代码如下:
this.serviceController1.MachineName = ".";
this.serviceController1.ServiceName = "IISAdmin";
if (serviceController1.CanStop)
{
MessageBox.Show(serviceController1.DisplayName + "服务可以停止");
}
else
{
MessageBox.Show(serviceController1.DisplayName + " 服务不可以停止");
}
完整程序代码如下:
★★★★★主程序文件完整程序代码★★★★★
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace _8_32
{
static class Program
{
///
/// 应用程序的主入口点。
///
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new frmServiceControlle());
}
}
}
★★★★★frmServiceControlle窗体设计文件完整程序代码★★★★★