100165809.htm

来自「C#高级编程(第三版),顶死你们。。 。up」· HTM 代码 · 共 974 行 · 第 1/4 页

HTM
974
字号


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
	
        32.5.5  ServiceController类
</title></head>
<body>
    <div class="area">

        

        <div class="col1">
            <div class="lineBlue">
            </div>
            <!-- title -->
            <div class="arcTitle">
                <h1>
                    <a href="../16">
                        C#高级编程(第3版)【全文连载】
                    </a>
                </h1>
                <div style="text-align: center; font-size: 15px">
                    <a href="100165809.htm">
                        32.5.5  ServiceController类
                    </a>
                </div>
                <div style="text-align: center; font-size: 15px">
                    <a class="url" href="../../default.htm">http://book.csdn.net/</a>
                    2006-10-13 14:41:00
                </div>
                <div style="margin: 0px auto; width: 700px; border: solid 1px #0b5f98;">
                    <div style="float: left; width: 16px; background-color: #0b5f98; color: White; padding: 1px;">
                        图书导读
                    </div>
                    <div style="float: right; width: 670px; text-align: left; line-height: 16pt; padding-left: 2px">
                        <!--导读-->
                        <h1 id="divCurrentNode" style="color: #b83507; width: 100%; text-align: left; font-size: 12px; padding-left: 2px">当前章节:<a href='100165809.htm'><font color='red'>32.5.5  ServiceController类</font></a></h1>
                        <div id="divRelateNode" style="padding-left: 2px">
                        <div style='float:left;width:49%'>·<a href='100165806.htm'>32.5.2  net.exe</a></div><div style='float:right;width:49%'>·<a href='100165807.htm'>32.5.3  sc.exe</a></div><div style='float:left;width:49%'>·<a href='100165808.htm'>32.5.4  Visual Studio .NET Server Explorer</a></div><div style='float:right;width:49%'>·<a href='100165810.htm'>32.6  故障排除</a></div><div style='float:left;width:49%'>·<a href='100165811.htm'>32.6.1  交互式服务</a></div><div style='float:right;width:49%'>·<a href='100165812.htm'>32.6.2  事件日志</a></div></div>
                    </div>
                </div>
                </div>
            <!-- main -->
            <div id="main">
                <div id="text"> <link href="css.css" rel="stylesheet" type="text/css" /><h3 style='margin-top:8.15pt;margin-right:0cm;FTEL:8.15pt;margin-left:
0cm'><span lang=EN-US>32.5.5&nbsp; ServiceController</span><span
style='font-family:黑体'>类</span></h3>

<p class=MsoNormal><span style='font-family:宋体;color:black;letter-spacing:.1pt'>下面创建一个小的</span><span
lang=EN-US style='color:black;letter-spacing:.1pt'>Windows</span><span
style='font-family:宋体;color:black;letter-spacing:.1pt'>应用程序,该应用程序使用</span><span
lang=EN-US style='color:black;letter-spacing:.1pt'>ServiceController</span><span
style='font-family:宋体;color:black;letter-spacing:.1pt'>类监视和控制</span><span
lang=EN-US style='color:black;letter-spacing:.1pt'>Windows</span><span
style='font-family:宋体;color:black;letter-spacing:.1pt'>服务。</span></p>

<p class=MsoNormal><span style='font-family:宋体;color:black'>创建一个</span><span
lang=EN-US style='color:black;letter-spacing:.1pt'>Windows</span><span
style='font-family:宋体;color:black;letter-spacing:.1pt'>窗体应用程序,</span><span
style='font-family:宋体;color:black'>这个应用程序的用户界面包含一个显示所有服务的列表框、</span><span
lang=EN-US style='color:black'>4</span><span style='font-family:宋体;color:black'>个文本框</span><span
lang=EN-US style='color:black'>(</span><span style='font-family:宋体;color:black'>分别用于显示服务的显示名称、状态、类型和名称</span><span
lang=EN-US style='color:black'>)</span><span style='font-family:宋体;color:black'>,以及</span><span
lang=EN-US style='color:black'>4</span><span style='font-family:宋体;color:black'>个发送控制事件的按钮,如图</span><span
lang=EN-US style='color:black'>32-18</span><span style='font-family:宋体;
color:black'>所示。</span></p>

<p align=center><span lang=EN-US><img width=312 height=189
src="32/image019.jpg"></span></p>

<p align=center style='FTEL:8.15pt'><span style='font-family:宋体;color:black'>图</span><span
lang=EN-US style='color:black'>&nbsp; 32-18</span></p>

<p class=MsoNormal><span style='font-family:宋体;color:black'>这里使用了</span><span
lang=EN-US style='color:black'>System.ServiceProcess.ServiceController</span><span
style='font-family:宋体;color:black'>类,因此必须引用</span><span lang=EN-US
style='color:black'>System.Service Process.dll</span><span style='font-family:
宋体;color:black'>。</span></p>

<p class=MsoNormal><span style='font-family:宋体;color:black'>这里还执行了</span><span
lang=EN-US style='color:black'>RefreshServiceList()</span><span
style='font-family:宋体;color:black'>方法,用下面的代码在列表框中列出所有的服务。这个方法是在</span><span
lang=EN-US style='color:black'>ServiceControlForm</span><span style='font-family:
宋体;color:black'>类的构造函数中调用的。该方法用所有服务的显示名称填写</span><span lang=EN-US
style='color:black'>listbox</span><span style='font-family:宋体;color:black'>。</span><span
lang=EN-US style='color:black'>GetServics()</span><span style='font-family:
宋体;color:black'>是</span><span lang=EN-US style='color:black'>ServiceController</span><span
style='font-family:宋体;color:black'>类的一个静态方法,它返回一个代表所有</span><span lang=EN-US
style='color:black'>Windows</span><span style='font-family:宋体;color:black'>服务的</span><span
lang=EN-US style='color:black'>ServiceController</span><span style='font-family:
宋体;color:black'>数组。</span><span lang=EN-US style='color:black'>ServiceController</span><span
style='font-family:宋体;color:black'>类也有一个静态的方法</span><span lang=EN-US
style='color:black'>GetDevices()</span><span style='font-family:宋体;color:black'>,它返回一个代表所有设备驱动器的</span><span
lang=EN-US style='color:black'>ServiceController</span><span style='font-family:
宋体;color:black'>数组。</span></p>

<p class=MsoBlockText style='margin-left:0cm;FTEL:21.25pt'><span
style='font-size:10.5pt;font-family:宋体;color:black;letter-spacing:0pt;
font-style:normal'>把</span><span lang=EN-US style='font-size:10.5pt;font-family:
"Times New Roman";color:black;letter-spacing:0pt;font-style:normal'>ServiceController.
GetServics()</span><span style='font-size:10.5pt;font-family:宋体;color:black;
letter-spacing:0pt;font-style:normal'>绑定到</span><span lang=EN-US
style='font-size:10.5pt;font-family:"Times New Roman";color:black;letter-spacing:
0pt;font-style:normal'>ListBox</span><span style='font-size:10.5pt;font-family:
宋体;color:black;letter-spacing:0pt;font-style:normal'>上,填充列表框:</span></p>

<p class=2 style='margin-top:8.15pt;margin-right:0cm;FTEL:0cm;
margin-left:21.45pt;FTEL:.0001pt;FTEL:18.45pt'><span
lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private
System.ServiceProcess.ServiceController[] services;</span></p>

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>&nbsp;</span></p>

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
public ServiceControlForm()</span></p>

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
{</span></p>

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
//</span></p>

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
// Required for Windows Form Designer support</span></p>

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
//</span></p>

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>&nbsp;</span></p>

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
InitializeComponent();</span></p>

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;RefreshServiceList();</span></p>

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}</span></p>

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
protected void RefreshServiceList()</span></p>

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
{</span></p>

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
services = ServiceController.GetServices();</span></p>

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
listBoxServices.DisplayMember = &quot;DisplayName&quot;;</span></p>

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
listBoxServices.DataSource = services;</span></p>

<p class=2 style='margin-top:0cm;margin-right:0cm;FTEL:8.15pt;
margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}</span></p>

<p class=MsoNormal><span style='font-family:宋体;color:black'>现在,所有的</span><span
lang=EN-US style='color:black'>Windows</span><span style='font-family:宋体;
color:black'>服务都显示在列表框中。接下来,必须获取服务的信息,把它们显示在文本框中。</span></p>

<h4 style='FTEL:21.45pt'><span lang=EN-US>1. </span><span
style='font-family:黑体'>服务的监视</span></h4>

<p class=MsoNormal><span style='font-family:宋体;color:black'>使用</span><span
lang=EN-US style='color:black'>ServiceController</span><span style='font-family:
宋体;color:black'>类,可以获取每一个服务的信息。</span><span lang=EN-US style='color:black'>ServiceController</span><span
style='font-family:宋体;color:black'>类的下列属性可以用于获取服务的信息,如表</span><span lang=EN-US
style='color:black'>32-4</span><span style='font-family:宋体;color:black'>所示。</span></p>

<p class=a5 style='margin-top:8.15pt'><span style='font-family:黑体;color:black'>表</span><span
lang=EN-US style='color:black'>&nbsp; 32-4</span></p>

<div align=center>

<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0
 style='margin-left:-7.95pt;border-collapse:collapse;border:none'>
 <tr style='page-break-inside:avoid'>
  <td width=156 valign=top style='width:117.3pt;border:solid windowtext 1.0pt;
  border-left:none;padding:0cm 5.4pt 0cm 5.4pt'>
  <p class=a2><span style='font-family:黑体;color:black'>属</span><span
  lang=EN-US style='color:black'>&nbsp;&nbsp;&nbsp; </span><span
  style='font-family:黑体;color:black'>性</span></p>
  </td>
  <td width=428 valign=top style='width:321.3pt;border-top:solid windowtext 1.0pt;
  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:none;
  padding:0cm 5.4pt 0cm 5.4pt'>
  <p class=a2><span style='font-family:黑体;color:black'>描</span><span
  lang=EN-US style='color:black'>&nbsp;&nbsp;&nbsp; </span><span
  style='font-family:黑体;color:black'>述</span></p>
  </td>
 </tr>
 <tr>
  <td width=156 valign=top style='width:117.3pt;border-top:none;border-left:
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0cm 5.4pt 0cm 5.4pt'>
  <p class=a4 style='margin-left:10.7pt'><span lang=EN-US style='color:black'>CanPauseAndContinue</span></p>
  </td>
  <td width=428 valign=top style='width:321.3pt;border:none;border-bottom:solid windowtext 1.0pt;
  padding:0cm 5.4pt 0cm 5.4pt'>
  <p class=a4 style='margin-left:10.7pt'><span
  style='font-family:宋体;color:black'>如果暂停和继续服务的请求可以发送给服务,则这个属性返回</span><span
  lang=EN-US style='color:black'>true</span></p>
  </td>
 </tr>
 <tr>
  <td width=156 valign=top style='width:117.3pt;border-top:none;border-left:
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0cm 5.4pt 0cm 5.4pt'>
  <p class=a4 style='margin-left:10.7pt'><span lang=EN-US style='color:black'>CanShutdown</span></p>
  </td>
  <td width=428 valign=top style='width:321.3pt;border:none;border-bottom:solid windowtext 1.0pt;
  padding:0cm 5.4pt 0cm 5.4pt'>
  <p class=a4 style='margin-left:10.7pt'><span
  style='font-family:宋体;color:black'>如果服务有系统关闭的处理程序,则它的值为</span><span
  lang=EN-US style='color:black'>true</span></p>
  </td>
 </tr>
 <tr>
  <td width=156 valign=top style='width:117.3pt;border-top:none;border-left:
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0cm 5.4pt 0cm 5.4pt'>
  <p class=a4 style='margin-left:10.7pt'><span lang=EN-US style='color:black'>CanStop</span></p>
  </td>
  <td width=428 valign=top style='width:321.3pt;border:none;border-bottom:solid windowtext 1.0pt;
  padding:0cm 5.4pt 0cm 5.4pt'>
  <p class=a4 style='margin-left:10.7pt'><span
  style='font-family:宋体;color:black'>如果服务是可以停止的,则它的值为</span><span lang=EN-US
  style='color:black'>true</span></p>
  </td>
 </tr>
 <tr>
  <td width=156 valign=top style='width:117.3pt;border-top:none;border-left:
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0cm 5.4pt 0cm 5.4pt'>
  <p class=a4 style='margin-left:10.7pt'><span lang=EN-US style='color:black'>DependentServices</span></p>
  </td>
  <td width=428 valign=top style='width:321.3pt;border:none;border-bottom:solid windowtext 1.0pt;
  padding:0cm 5.4pt 0cm 5.4pt'>
  <p class=a4 style='margin-left:10.7pt'><span
  style='font-family:宋体;color:black'>它返回一个依存服务的集合。如果服务停止,则所有依存的服务都预先停止</span></p>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?