珍珠翡翠白玉汤

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

使用 System.ServiceProcess.ServiceController 类,可以获取指定服务的信息,并能控制指定服务。
注意:要添加 C:\WINNT\Microsoft.NET\Framework\v1.1.4322\System.ServiceProcess.dll 的引用

当调用ServiceController类对象 的Start()/Stop() 方法后,ServiceController 对象的Status 属性并不会发生变化,如果要使Status属性的值反映出服务的真实情况,必须通过一些方法来实现:
eg:
//定义一个ServiceController 对象
ServiceController sc = new ServiceController("Telnet");
 //开始启动"Telnet"服务,马上执行下一条语句(这时候telnet服务还没有完成启动)
sc.Start(); 
//等待服务到达running状态
sc.WaitForStatus(ServiceControllerStatus.Running); 
 //刷新对象的属性值
sc.Refresh();     
//打印对象的Status属性值
Console.WriteLine("Service Status: " + sc.Status.ToString()); 

注意:因为,启动任何服务都需要一定的时间,上面的例子中,如果没有WaitForStatus()语句,打印出的Status的值是 StartPending 。因为Start()方法启动了服务,但不会等待服务完成启动,就马上执行下一条语句了(这时服务正处于"启动中"状态)。
如果没有sc.Refresh()语句,sc对象的Status属性值是不会发生变化的

posted on 2007-01-20 15:46  zqf620  阅读(289)  评论(1编辑  收藏  举报