<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-昨夜飘风</title><link>http://www.cnblogs.com/viki117/</link><description>昨　夜，　风，　飘　过；

枯　树，　叶，　飞　落。</description><language>zh-cn</language><lastBuildDate>Wed, 08 Oct 2008 04:39:33 GMT</lastBuildDate><pubDate>Wed, 08 Oct 2008 04:39:33 GMT</pubDate><ttl>60</ttl><item><title>C#通用更新程序</title><link>http://www.cnblogs.com/viki117/archive/2008/09/29/1301837.html</link><dc:creator>昨夜飘风</dc:creator><author>昨夜飘风</author><pubDate>Mon, 29 Sep 2008 01:21:00 GMT</pubDate><guid>http://www.cnblogs.com/viki117/archive/2008/09/29/1301837.html</guid><wfw:comment>http://www.cnblogs.com/viki117/comments/1301837.html</wfw:comment><comments>http://www.cnblogs.com/viki117/archive/2008/09/29/1301837.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/viki117/comments/commentRss/1301837.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/viki117/services/trackbacks/1301837.html</trackback:ping><description><![CDATA[<p>这个是我在网上找的，然后改进过了，程序代码我就不说明了，想知道的自己下过去看，</p>
<p>这里我只说明下一个XML文件，在程序中是<font face="Verdana">UpdateList.xml</font>，他记录了当前文件版本、更新服务器地址、各文件的当前版本、更新前需要关闭的程序等，打开这个文件看下就基本明白了。这个文件需要2个，一个是用户机器上的，记录用户当前的程序信息、更新服务器等；一个是在web服务器上的，记录当前最新版本的程序信息、更新服务器等；</p>
<p>更新前需要架好web服务器端，把最新版本的<font face="Verdana">UpdateList.xml和要更新的文件放到web根目录下，里面可以随意建文件夹，只要在<font face="Verdana">UpdateList.xml</font>里写明路径就好，更新后会在用户端自动识别路径的，没有则会创建。</font></p>
<p>再说明下，由于没有做更新文件夹路径判断，所以更新程序EXE只能放到要更新程序EXE当前目录下，否则是更新不到的，有需要的人需要自己去写路径判断了，写到<font face="Verdana">UpdateList.xml里去吧</font></p>
<p>VS2008版本：<a href="http://files.cnblogs.com/viki117/AutoUpdate.rar">下载1</a></p>
<p>VS2003版本：<a href="http://files.cnblogs.com/viki117/AutoUpdate2003.rar">下载2</a></p>
<p>这里还有一个XML文件生成器，也有原码：<a href="http://files.cnblogs.com/viki117/AULWriter1.0.rar">下载3</a></p>
<img src ="http://www.cnblogs.com/viki117/aggbug/1301837.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42841/" target="_blank">[新闻]Google向Wine贡献更多代码</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>C#使用WebResponse实现断点续传</title><link>http://www.cnblogs.com/viki117/archive/2008/09/27/1299966.html</link><dc:creator>昨夜飘风</dc:creator><author>昨夜飘风</author><pubDate>Sat, 27 Sep 2008 01:17:00 GMT</pubDate><guid>http://www.cnblogs.com/viki117/archive/2008/09/27/1299966.html</guid><wfw:comment>http://www.cnblogs.com/viki117/comments/1299966.html</wfw:comment><comments>http://www.cnblogs.com/viki117/archive/2008/09/27/1299966.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/viki117/comments/commentRss/1299966.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/viki117/services/trackbacks/1299966.html</trackback:ping><description><![CDATA[<p>代码如下，最好还需要加上文件版本判断，确定是不是同一个文件，不要是牛头马面了</p>
<div class="cnblogs_code"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">&nbsp;fileStream&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;FileStream(Path,FileMode.Append,FileAccess.Write);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;inStream&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;HttpWebRequest&nbsp;&nbsp;&nbsp;myre</span><span style="color: #000000">=</span><span style="color: #000000">(HttpWebRequest)WebRequest.Create(URL);&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(fileStream.Length&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;myre.ContentLength)&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;MessageBox.Show(</span><span style="color: #800000">"</span><span style="color: #800000">你以完成下载该程序了</span><span style="color: #800000">"</span><span style="color: #000000">,</span><span style="color: #800000">"</span><span style="color: #800000">ok</span><span style="color: #800000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;myre.AddRange(Convert.ToInt32(fileStream.Length));</span><span style="color: #008000">//</span><span style="color: #008000">接上次下载的字节开始下载文件&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;HttpWebResponse&nbsp;&nbsp;&nbsp;response&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;(HttpWebResponse)myre.GetResponse();&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;inStream&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">response&nbsp;&nbsp;&nbsp;.GetResponseStream();&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.progressBar1.Maximum&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;total;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.progressBar1.Minimum&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #800080">0</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;length&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #800080">1024</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">byte</span><span style="color: #000000">[]&nbsp;&nbsp;&nbsp;buffer&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">byte</span><span style="color: #000000">[</span><span style="color: #800080">1025</span><span style="color: #000000">];&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;readerLength&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #800080">0</span><span style="color: #000000">,currentLength</span><span style="color: #000000">=</span><span style="color: #800080">0</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">((readerLength&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">inStream.Read(buffer,</span><span style="color: #800080">0</span><span style="color: #000000">,length))</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #800080">0</span><span style="color: #000000">)&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;currentLength&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readerLength&nbsp;&nbsp;&nbsp;;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;fileStream.Write(buffer,</span><span style="color: #800080">0</span><span style="color: #000000">,readerLength);&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.progressBar1.Value&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">currentLength&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;countByte;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;fileStream.Close();&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;inStream.Close();&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;File.Delete(Application.StartupPath&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">+</span><span style="color: #800000">@"</span><span style="color: #800000">\FileLength.txt</span><span style="color: #800000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;MessageBox.Show(</span><span style="color: #800000">"</span><span style="color: #800000">down&nbsp;&nbsp;&nbsp;成功</span><span style="color: #800000">"</span><span style="color: #000000">,</span><span style="color: #800000">"</span><span style="color: #800000">ok</span><span style="color: #800000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;</span></div>
<img src ="http://www.cnblogs.com/viki117/aggbug/1299966.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42840/" target="_blank">[新闻]苹果创始人Steve Wozniak称iPod将被淘汰</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>C# 非动态更新Webservice的服务地址</title><link>http://www.cnblogs.com/viki117/archive/2008/09/02/1282093.html</link><dc:creator>昨夜飘风</dc:creator><author>昨夜飘风</author><pubDate>Tue, 02 Sep 2008 07:42:00 GMT</pubDate><guid>http://www.cnblogs.com/viki117/archive/2008/09/02/1282093.html</guid><wfw:comment>http://www.cnblogs.com/viki117/comments/1282093.html</wfw:comment><comments>http://www.cnblogs.com/viki117/archive/2008/09/02/1282093.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/viki117/comments/commentRss/1282093.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/viki117/services/trackbacks/1282093.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font face="Verdana">Webservice</font>服务比较固定，至少有些服务比较固定，而且集中，这个时候谁也不喜欢动态的来来往往，这个时候只要修改下Web References文件夹下的Reference.cs，指定this.Url = &#8220;读取外部文件&#8221;，给个具体的代码吧</p>
<p>&nbsp;</p>
<div class="cnblogs_code"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000">//</span><span style="color: #008000">获取外部TXT文件中的webservice地址</span><span style="color: #008000"><br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;GetUrl()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;_CodeBase&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;System.Reflection.Assembly.GetExecutingAssembly().CodeBase;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_CodeBase&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;_CodeBase.Substring(</span><span style="color: #800080">8</span><span style="color: #000000">,&nbsp;_CodeBase.Length&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">8</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;8是&nbsp;file:</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;的长度</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">[]&nbsp;arrSection&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;_CodeBase.Split(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">[]&nbsp;{&nbsp;</span><span style="color: #800000">'</span><span style="color: #800000">/</span><span style="color: #800000">'</span><span style="color: #000000">&nbsp;});<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;_FolderPath&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">""</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">0</span><span style="color: #000000">;&nbsp;i&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;arrSection.Length&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">1</span><span style="color: #000000">;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_FolderPath&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;arrSection[i]&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">/</span><span style="color: #800000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;fileaddress&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;_FolderPath&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">@"</span><span style="color: #800000">\WorkFlowAddress.txt</span><span style="color: #800000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">File.Exists(fileaddress))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File.Create(fileaddress);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StreamReader&nbsp;sr&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;StreamReader(fileaddress);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;str&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;sr.ReadToEnd().Trim();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sr.Close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;str;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<div class="cnblogs_code"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000">//</span><span style="color: #008000">修改this.Url，其他的都不重要了，不管它们了</span><span style="color: #008000"><br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;FuctionForFlow()&nbsp;{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.Url&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;GetUrlClass.GetUrl();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">"</span><span style="color: #008000; text-decoration: underline">http://192.168.2.16/SuperFormWS/WorkFlow/FuctionForFlow.asmx</span><span style="color: #008000">";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">global::EformWorkflow.Properties.Settings.Default.EformWorkflow_EformWeb_FuctionForFlow;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;((</span><span style="color: #0000ff">this</span><span style="color: #000000">.IsLocalFileSystemWebService(</span><span style="color: #0000ff">this</span><span style="color: #000000">.Url)&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">))&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.UseDefaultCredentials&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.useDefaultCredentialsSetExplicitly&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.useDefaultCredentialsSetExplicitly&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<img src ="http://www.cnblogs.com/viki117/aggbug/1282093.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42839/" target="_blank">[新闻]福布斯：硅谷日子将更难过 谁下一个倒下</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>C# 动态载入Webservice的方法</title><link>http://www.cnblogs.com/viki117/archive/2008/09/02/1282085.html</link><dc:creator>昨夜飘风</dc:creator><author>昨夜飘风</author><pubDate>Tue, 02 Sep 2008 07:35:00 GMT</pubDate><guid>http://www.cnblogs.com/viki117/archive/2008/09/02/1282085.html</guid><wfw:comment>http://www.cnblogs.com/viki117/comments/1282085.html</wfw:comment><comments>http://www.cnblogs.com/viki117/archive/2008/09/02/1282085.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/viki117/comments/commentRss/1282085.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/viki117/services/trackbacks/1282085.html</trackback:ping><description><![CDATA[<div class="cnblogs_code"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;System;<br />
</span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;System.Collections.Generic;<br />
</span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;System.Linq;<br />
</span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;System.Text;<br />
<br />
</span><span style="color: #0000ff">namespace</span><span style="color: #000000">&nbsp;EformWorkflow<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;ServiceClass<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;summary&gt;</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;根据指定的信息，调用远程WebService方法<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;/summary&gt;</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;param&nbsp;name="url"&gt;</span><span style="color: #008000">WebService和Htt形式的地址</span><span style="color: #808080">&lt;/param&gt;</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;param&nbsp;name="namespace"&gt;</span><span style="color: #008000">欲调用的WebService的命名空间</span><span style="color: #808080">&lt;/param&gt;</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;param&nbsp;name="classname"&gt;</span><span style="color: #008000">欲调用的WebService的类名（不包括命名空间前缀）</span><span style="color: #808080">&lt;/param&gt;</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;param&nbsp;name="methodname"&gt;</span><span style="color: #008000">欲调用的WebService的方法名</span><span style="color: #808080">&lt;/param&gt;</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;param&nbsp;name="args"&gt;</span><span style="color: #008000">参数列表</span><span style="color: #808080">&lt;/param&gt;</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;returns&gt;</span><span style="color: #008000">WebService的执行结果</span><span style="color: #808080">&lt;/returns&gt;</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;remarks&gt;</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;如果调用失败，将会抛出Exception。请调用的时候，适当截获异常。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;异常信息可能会发生在两个地方：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;1、动态构造WebService的时候，CompileAssembly失败。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;2、WebService本身执行失败。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;/remarks&gt;</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;example&gt;</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;code&gt;</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;object&nbsp;obj&nbsp;=&nbsp;InvokeWebService("</span><span style="color: #008000; text-decoration: underline">http://192.168.2.37/SuperFormWS/WorkFlow/FuctionForFlow.asmx</span><span style="color: #008000">",&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;"SuperFormWS.WorkFlow",&nbsp;"FuctionForFlow",&nbsp;"Flow_CommondSignal",&nbsp;new&nbsp;object[]{"1"});<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;/code&gt;</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;/example&gt;</span><span style="color: #808080"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">object</span><span style="color: #000000">&nbsp;InvokeWebservice(</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;url,&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;@namespace,&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;classname,&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;methodname,&nbsp;</span><span style="color: #0000ff">object</span><span style="color: #000000">[]&nbsp;args)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.Net.WebClient&nbsp;wc&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;System.Net.WebClient();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.IO.Stream&nbsp;stream&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;wc.OpenRead(url&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">?WSDL</span><span style="color: #800000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.Web.Services.Description.ServiceDescription&nbsp;sd&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;System.Web.Services.Description.ServiceDescription.Read(stream);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.Web.Services.Description.ServiceDescriptionImporter&nbsp;sdi&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;System.Web.Services.Description.ServiceDescriptionImporter();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sdi.AddServiceDescription(sd,&nbsp;</span><span style="color: #800000">""</span><span style="color: #000000">,&nbsp;</span><span style="color: #800000">""</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.CodeDom.CodeNamespace&nbsp;cn&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;System.CodeDom.CodeNamespace(@namespace);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.CodeDom.CodeCompileUnit&nbsp;ccu&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;System.CodeDom.CodeCompileUnit();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ccu.Namespaces.Add(cn);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sdi.Import(cn,&nbsp;ccu);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Microsoft.CSharp.CSharpCodeProvider&nbsp;csc&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Microsoft.CSharp.CSharpCodeProvider();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.CodeDom.Compiler.ICodeCompiler&nbsp;icc&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;csc.CreateCompiler();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.CodeDom.Compiler.CompilerParameters&nbsp;cplist&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;System.CodeDom.Compiler.CompilerParameters();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cplist.GenerateExecutable&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cplist.GenerateInMemory&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cplist.ReferencedAssemblies.Add(</span><span style="color: #800000">"</span><span style="color: #800000">System.dll</span><span style="color: #800000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cplist.ReferencedAssemblies.Add(</span><span style="color: #800000">"</span><span style="color: #800000">System.XML.dll</span><span style="color: #800000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cplist.ReferencedAssemblies.Add(</span><span style="color: #800000">"</span><span style="color: #800000">System.Web.Services.dll</span><span style="color: #800000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cplist.ReferencedAssemblies.Add(</span><span style="color: #800000">"</span><span style="color: #800000">System.Data.dll</span><span style="color: #800000">"</span><span style="color: #000000">);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.CodeDom.Compiler.CompilerResults&nbsp;cr&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;icc.CompileAssemblyFromDom(cplist,&nbsp;ccu);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">true</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;cr.Errors.HasErrors)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.Text.StringBuilder&nbsp;sb&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;StringBuilder();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">foreach</span><span style="color: #000000">&nbsp;(System.CodeDom.Compiler.CompilerError&nbsp;ce&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">&nbsp;cr.Errors)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sb.Append(ce.ToString());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sb.Append(System.Environment.NewLine);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throw</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Exception(sb.ToString());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.Reflection.Assembly&nbsp;assembly&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;cr.CompiledAssembly;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type&nbsp;t&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;assembly.GetType(@namespace&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">.</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;classname,&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">object</span><span style="color: #000000">&nbsp;obj&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Activator.CreateInstance(t);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.Reflection.MethodInfo&nbsp;mi&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;t.GetMethod(methodname);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;mi.Invoke(obj,&nbsp;args);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(Exception&nbsp;ex)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throw</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Exception(ex.InnerException.Message,&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Exception(ex.InnerException.StackTrace));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
</span></div>
<img src ="http://www.cnblogs.com/viki117/aggbug/1282085.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42839/" target="_blank">[新闻]福布斯：硅谷日子将更难过 谁下一个倒下</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>事务管理系统需求分析</title><link>http://www.cnblogs.com/viki117/archive/2008/08/31/1280738.html</link><dc:creator>昨夜飘风</dc:creator><author>昨夜飘风</author><pubDate>Sun, 31 Aug 2008 12:01:00 GMT</pubDate><guid>http://www.cnblogs.com/viki117/archive/2008/08/31/1280738.html</guid><wfw:comment>http://www.cnblogs.com/viki117/comments/1280738.html</wfw:comment><comments>http://www.cnblogs.com/viki117/archive/2008/08/31/1280738.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/viki117/comments/commentRss/1280738.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/viki117/services/trackbacks/1280738.html</trackback:ping><description><![CDATA[&nbsp;
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong><span style="font-size: 15pt; font-family: 宋体">事务管理系统需求分析</span></strong><strong></strong></p>
<p style="margin-left: 21pt; text-indent: -21pt"><strong><span style="font-size: 12pt">(一) </span></strong><strong><span style="font-size: 12pt; font-family: 宋体">系统背景</span></strong><strong></strong></p>
<p style="margin-left: 21pt; text-indent: 21pt"><span style="font-family: 宋体">系统的服务对象是集团化的公司机构，集团由不同地域公司构成，也包括一些港澳和海外办事处；各公司人员基本在本公司工作，有少部分人员和管理层需要处理跨公司的事务；各公司之间相对独立，但之间会分享绝大多数的资源。现在公司需求一个系统，来安排日常的各种各样的办公事务，并实现事务中资源的跟踪；系统的目的是协助日常工作，使员工非常方便的了解日常需要进行的办公事务，并记录一些工作记录，或者是个人心得等，但系统不能过度约束员工的日常工作，不能成为日常工作的支配者。</span></p>
<p>&nbsp;</p>
<p style="margin-left: 21pt; text-indent: -21pt"><strong><span style="font-size: 12pt">(二) </span></strong><strong><span style="font-size: 12pt; font-family: 宋体">系统需求</span></strong><strong></strong></p>
<p style="margin-left: 1cm; text-indent: -1.35pt"><strong><span style="font-size: 9pt">1.1. </span></strong><strong><span style="font-size: 9pt; font-family: 宋体">系统需求概要描述</span></strong><strong></strong></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">本系统的事务所指的日常工作和生活中所有的可供安排或记录的事件，比如工作任务、计划安排、工作记录等；在系统中要实现类似日记本一样的功能，提供添加事务、处理事务、记录事务等业务，并实现事务流程的功能，即事务按照设置从一个人到另一个人，中间完成事务的各种处理环节；形象的比喻，系统实现了自动生成事务的笔记本，每个人都有自己的一本，参照笔记本上的描述，来协调自己的工作，并可以把自己处理的结果分享到其他需要的人的笔记本上去。</span></p>
<p style="margin-left: 1cm; text-indent: -1.35pt"><strong><span style="font-size: 9pt">1.2. </span></strong><strong><span style="font-size: 9pt; font-family: 宋体">系统主要对象描述</span></strong><strong></strong></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">在上面对系统做过一个大致的要求后，可以确认系统主要是围绕用户和事务的一个状态处理，也可以说是事务的流程处理，流程的对象就是用户；为了更加符合日常工作分类的需求，系统还需要引入项目的概念，这里项目就是一组工作的集合体。为了更加详细的明确系统涉及到主要对象，下面我们把这里分开描述：</span></p>
<p style="margin-left: 42pt; text-indent: -21pt">1.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">用户：用户就是系统的使用者，也是事务的拥有者，一个人可以拥有多个事务，当然一个事务也属于多个用户；用户是系统活动的主要对象，事务的处理过程实际上就是事物在用户之间的传递；用户构成了公司团体。</span></p>
<p style="margin-left: 42pt; text-indent: -21pt">2.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">事务：事务是系统的唯一处理对象，事务记录了用户描述的各种内容，结合流程和状态，形成了事务的各种状态，即事件流；不同的事务之间可以存在联系，这样就形成了事务之间项目跟踪。</span></p>
<p style="margin-left: 42pt; text-indent: -21pt">3.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">状态：</span><span style="font-family: 宋体">状态指物质系统所处的状况</span><span style="font-family: Arial">,</span><span style="font-family: 宋体">由一组物理量来表征；系统中主要是用来描述事务针对某个或某些用户所处的阶段；状态可以是单一的，也可以是一组状态的再组合。</span></p>
<p style="margin-left: 42pt; text-indent: -21pt">4.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">流程：流程是一组用户的排列组合，每个用户结合一个状态，形成的一个处理过程；系统中流程主要的功能就是结合事务形成事务流，将事务一步一步的交给流程中的用户去处理。</span></p>
<p style="margin-left: 42pt; text-indent: -21pt">5.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">项目：项目就是一组人处理一组工作，这里指的是一组事务和一组人员组合体；项目形成了系统中事务最终的运作单位，它限制了事务所面队的用户；项目可以不停的加入和去除事务和人员。</span></p>
<p style="margin-left: 42pt; text-indent: -21pt">6.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">事务流：事务流在流程中有提到，它是虽然不算是系统的具体对象，但是却是系统中很重要的一个处理对象组合，事物流的处理是系统的主要工作。</span></p>
<p style="margin-left: 21pt"><span style="font-family: 宋体">下图为对象关系图：</span></p>
<p style="margin-left: 21pt"></p>
<p style="margin-left: 1cm; text-indent: -1.35pt"><strong><span style="font-size: 9pt"><img height="271" alt="" src="http://www.cnblogs.com/images/cnblogs_com/viki117/usercase.jpg" width="413" border="0" />1.3. </span></strong><strong><span style="font-size: 9pt; font-family: 宋体">系统功能描述</span></strong><strong></strong></p>
<p style="margin-left: 21pt"><span style="font-family: 宋体">明确了系统的主要对象和总体的需求描述后，可知该系统至少应该具有如下功能模块：</span></p>
<p style="margin-left: 39pt; text-indent: -18pt">1．&nbsp;<span style="font-family: 宋体">用户资料及其结构管理</span></p>
<p style="margin-left: 39pt; text-indent: -18pt">2．&nbsp;<span style="font-family: 宋体">权限管理</span></p>
<p style="margin-left: 39pt; text-indent: -18pt">3．&nbsp;<span style="font-family: 宋体">事务模板管理</span></p>
<p style="margin-left: 39pt; text-indent: -18pt">4．&nbsp;<span style="font-family: 宋体">项目管理</span></p>
<p style="margin-left: 39pt; text-indent: -18pt">5．&nbsp;<span style="font-family: 宋体">事务管理</span></p>
<p style="margin-left: 39pt; text-indent: -18pt">6．&nbsp;<span style="font-family: 宋体">工作流管理</span></p>
<p style="margin-left: 39pt; text-indent: -18pt">7．&nbsp;<span style="font-family: 宋体">事务查询和展现</span></p>
<p style="margin-left: 39pt; text-indent: -18pt">8．&nbsp;<span style="font-family: 宋体">知识积累</span></p>
<p style="margin-left: 39pt; text-indent: -18pt">9．&nbsp;<span style="font-family: 宋体">数据词典</span></p>
<p style="margin-left: 21pt"><span style="font-family: 宋体">下面是功能结构图：</span></p>

<p style="margin-left: 21pt"><strong><span style="font-size: 9pt"><img height="253" alt="" src="http://www.cnblogs.com/images/cnblogs_com/viki117/function.jpg" width="447" border="0" /></span></strong></p>
<p style="margin-left: 21pt"><strong><span style="font-size: 9pt">1.4. </span></strong><strong><span style="font-size: 9pt; font-family: 宋体">功能细化描述</span></strong><strong></strong></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">了解了系统的几个大体功能需求后，这里还需要对各功能进行描述和稍微的细化</span></p>
<p style="margin-left: 35.45pt; text-indent: 0.55pt"><em><span style="font-size: 9pt">1.4.1.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></em><em><span style="font-size: 9pt; font-family: 宋体">用户资料及其结构管理</span></em><em></em></p>
<p style="margin-left: 21pt; text-indent: 14.45pt"><span style="font-family: 宋体">该功能模块应该具备两个功能：一是用户资料管理，二是部门机构管理；用户管理负责记录用户的帐号、密码、姓名等基础资料；部门机构管理负责构件公司团体，并且可以根据需求构件多个独立的公司团体，然后把用户添加到具体的部门机构中去，这样用户是单一的，但可以属于多个机构；下面是细化后的功能：</span></p>
<p style="margin-left: 53.45pt; text-indent: -18pt">1．&nbsp;<span style="font-family: 宋体">用户基础资料管理</span></p>
<p style="margin-left: 53.45pt; text-indent: -18pt">2．&nbsp;<span style="font-family: 宋体">公司团体的构建维护</span></p>
<p style="margin-left: 53.45pt; text-indent: -18pt">3．&nbsp;<span style="font-family: 宋体">人员的分派</span></p>
<p style="margin-left: 35.45pt; text-indent: 0.55pt"><em><span style="font-size: 9pt">1.4.2.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></em><em><span style="font-size: 9pt; font-family: 宋体">权限管理</span></em><em></em></p>
<p style="margin-left: 21pt; text-indent: 21pt"><span style="font-family: 宋体">权限管理是在用户和公司架构之后才能进行的工作，系统会根据系统设计，给出一套基础权限，然后在这基础上构建角色，然后赋予用户角色，当然也可以直接赋予用户权限，而且优先直接赋予的权限；下面是细化后的功能：</span></p>
<p style="margin-left: 60pt; text-indent: -18pt">1．&nbsp;<span style="font-family: 宋体">基础权限的建立（系统指定，却不可以更改）</span></p>
<p style="margin-left: 60pt; text-indent: -18pt">2．&nbsp;<span style="font-family: 宋体">角色管理</span></p>
<p style="margin-left: 60pt; text-indent: -18pt">3．&nbsp;<span style="font-family: 宋体">权限赋予</span></p>
<p style="margin-left: 35.45pt; text-indent: 0.55pt"><em><span style="font-size: 9pt">1.4.3.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></em><em><span style="font-size: 9pt; font-family: 宋体">事务模板管理</span></em><em></em></p>
<p style="margin-left: 21pt; text-indent: 21pt"><span style="font-family: 宋体">为了满足不同用户和不同事务的要求，模板需要实现自定义功能，用户可以任意定义事务的字段构成，并存为模板；为了对不同事务模板产生的事务的查询，还需要实现自定义查询条件，以查询自定义模板中的自定义字段；下面是细化后的功能：</span></p>
<p style="margin-left: 60pt; text-indent: -18pt">1．&nbsp;<span style="font-family: 宋体">自定义事务模板</span></p>
<p style="margin-left: 60pt; text-indent: -18pt">2．&nbsp;<span style="font-family: 宋体">自定义事物查询条件</span></p>
<p style="margin-left: 60pt; text-indent: -18pt">3．&nbsp;<span style="font-family: 宋体">定义模板间的关联</span></p>
<p style="margin-left: 60pt; text-indent: -18pt">4．&nbsp;<span style="font-family: 宋体">定义模板的使用范围</span></p>
<p style="margin-left: 35.45pt; text-indent: 0.55pt"><em><span style="font-size: 9pt">1.4.4.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></em><em><span style="font-size: 9pt; font-family: 宋体">项目管理</span></em><em></em></p>
<p style="margin-left: 21pt; text-indent: 21pt"><span style="font-family: 宋体">项目是日常工作的构成单位，任何事务都能归属到一个项目中，为了使事务更加现实，所有的事物必须归属到项目中才可以使用，一个项目可以包含多个事务；同时项目也限制了事务所能涉及到人员；下面是细化后的功能：</span></p>
<p style="margin-left: 60pt; text-indent: -18pt">1．&nbsp;<span style="font-family: 宋体">项目的建立</span></p>
<p style="margin-left: 60pt; text-indent: -18pt">2．&nbsp;<span style="font-family: 宋体">项目中事务和人员的管理</span></p>
<p style="margin-left: 60pt; text-indent: -18pt">3．&nbsp;<span style="font-family: 宋体">项目的删除</span></p>
<p style="margin-left: 35.45pt; text-indent: 0.55pt"><em><span style="font-size: 9pt">1.4.5.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></em><em><span style="font-size: 9pt; font-family: 宋体">事务管理</span></em><em></em></p>
<p style="margin-left: 21pt; text-indent: 21pt"><span style="font-family: 宋体">事务管理指的是事务运做管理，包括事务的建立、发送、处理等，其实也就是处理事务的流程；下面是细化后的功能：</span></p>
<p style="margin-left: 60pt; text-indent: -18pt">1．&nbsp;<span style="font-family: 宋体">事务新建</span></p>
<p style="margin-left: 60pt; text-indent: -18pt">2．&nbsp;<span style="font-family: 宋体">事务流程制定</span></p>
<p style="margin-left: 60pt; text-indent: -18pt">3．&nbsp;<span style="font-family: 宋体">事务发送</span></p>
<p style="margin-left: 60pt; text-indent: -18pt">4．&nbsp;<span style="font-family: 宋体">事务接受和处理</span></p>
<p style="margin-left: 60pt; text-indent: -18pt">5．&nbsp;<span style="font-family: 宋体">事务完结</span></p>
<p style="margin-left: 35.45pt; text-indent: 0.55pt"><em><span style="font-size: 9pt">1.4.6.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></em><em><span style="font-size: 9pt; font-family: 宋体">工作流管理</span></em><em></em></p>
<p style="margin-left: 21pt; text-indent: 21pt"><span style="font-family: 宋体">工作流指的是事务的传递流程，主要针对有先后处理要求的事务，为了保证流程的通用性，对于不需要流程的事务，系统默认为单流程，也就是开始及结束。为了适应不同流程的要求，系统需要有一个流程引擎，以便可以设计出各种流程，满足用户的需求。下面是细化后的功能：</span></p>
<p style="margin-left: 60pt; text-indent: -18pt">1．&nbsp;<span style="font-family: 宋体">流程引擎</span></p>
<p style="margin-left: 60pt; text-indent: -18pt">2．&nbsp;<span style="font-family: 宋体">流程制定</span></p>
<p style="margin-left: 60pt; text-indent: -18pt">3．&nbsp;<span style="font-family: 宋体">流程处理</span></p>
<p style="margin-left: 60pt; text-indent: -18pt">4．&nbsp;<span style="font-family: 宋体">流程终止</span></p>
<p style="margin-left: 35.45pt; text-indent: 0.55pt"><em><span style="font-size: 9pt">1.4.7.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></em><em><span style="font-size: 9pt; font-family: 宋体">事务查询和展现</span></em><em></em></p>
<p style="margin-left: 21pt; text-indent: 21pt"><span style="font-family: 宋体">事物的查询是按照用户定义好的条件来对数据进行过滤，这个条件可以使用事先定义好的，也可以自行定义一个查询组合；展现是一个用户体验问题，为了满足用户的各种需求；展现也需要实现用户指定的效果，但是必须限制在系统所能提供的展现模式之中的，为了满足日后各种不同的展现要求，系统的展现必须模块化，查询负责提供数据接口，展现负责获取数据后进行展示给用户看，展现通过调用不同的展现模块可以实现不同的展现效果；系统默认有日历、树和列表这三种模式，以满足大多数用户的需求。下面是细化的功能：</span></p>
<p style="margin-left: 60pt; text-indent: -18pt">1．&nbsp;<span style="font-family: 宋体">查询条件的制订</span></p>
<p style="margin-left: 60pt; text-indent: -18pt">2．&nbsp;<span style="font-family: 宋体">查询事务</span></p>
<p style="margin-left: 60pt; text-indent: -18pt">3．&nbsp;<span style="font-family: 宋体">选择展现模式</span></p>
<p style="margin-left: 60pt; text-indent: -18pt">4．&nbsp;<span style="font-family: 宋体">数据展现</span></p>
<p style="margin-left: 60pt; text-indent: -18pt">5．&nbsp;<span style="font-family: 宋体">联接到事务的明细</span></p>
<p style="margin-left: 35.45pt; text-indent: 0.55pt"><em><span style="font-size: 9pt">1.4.8.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></em><em><span style="font-size: 9pt; font-family: 宋体">知识积累</span></em><em></em></p>
<p style="margin-left: 21pt; text-indent: 21pt"><span style="font-family: 宋体">知识积累相对比较简单，就是一个收藏事务的功能，或者说是文摘；用户选择某个事务，保存一个联接，并填写标注，记录在用户的知识库中；对于一些比较重要事务，可以选择发布到公共知识库中，以引起大家的注意；下面是细化后的功能：</span></p>
<p style="margin-left: 60pt; text-indent: -18pt">1．&nbsp;<span style="font-family: 宋体">个人事务收藏</span></p>
<p style="margin-left: 60pt; text-indent: -18pt">2．&nbsp;<span style="font-family: 宋体">发布事物到公共知识库</span></p>
<p style="margin-left: 35.45pt; text-indent: 0.55pt"><em><span style="font-size: 9pt">1.4.9.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></em><em><span style="font-size: 9pt; font-family: 宋体">数据词典</span></em><em></em></p>
<p style="margin-left: 21pt; text-indent: 21pt"><span style="color: black; font-family: 宋体">数据词典（</span><span style="color: black; font-family: Verdana">Data Dictionary</span><span style="color: black; font-family: 宋体">，简称</span><span style="color: black; font-family: Verdana">DD</span><span style="color: black; font-family: 宋体">）就是用来定义数据流图中的各个成分的具体含义的。对数据流图中出现的每一个数据流、文件、加工给出详细定义。数据字典主要有四类条目：数据流、数据项、数据存储、基本加工。数据项是组成数据流和数据存储的最小元素。</span></p>
<p style="margin-left: 21pt; text-indent: 21pt"><span style="font-family: 宋体">软件开发中数据字典必不可少。这主要是为了以后的维护和二次开发。一般来说，数据字典包括两个方面，一类是资料库方面的，包括资料库的</span><span style="font-family: Tahoma">PK,FK,AK,</span><span style="font-family: 宋体">栏位，以及各个栏位的说明，另一类是有关程式的，包括程式的文档名，每个程式所包含的</span><span style="font-family: Tahoma">Component</span><span style="font-family: 宋体">等。</span></p>
<p style="margin-left: 60pt; text-indent: -18pt"><span style="font-family: Tahoma">1． </span><span style="font-family: 宋体">数据库表及其字段的构成、含义、类型等</span></p>
<p style="margin-left: 60pt; text-indent: -18pt">2．&nbsp;<span style="font-family: 宋体">程序的构成及其参数描述</span></p>
<p>&nbsp;</p>
<p style="margin-left: 21pt; text-indent: -21pt"><strong><span style="font-size: 12pt">(三) </span></strong><strong><span style="font-size: 12pt; font-family: 宋体">小结</span></strong><strong></strong></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">上述的系统概要需求描述，来源以对网上现有的很多事务和项目管理系统的结合，我们的核心内容是灵活多边事务定义及其事务流的管理，适合集团化多公司的机构使用，并借鉴很多现有系统的展现模式，来满足我们对事物管理和跟踪的要求，并给用户提供较好的操作体验。</span></p>
<img src ="http://www.cnblogs.com/viki117/aggbug/1280738.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42836/" target="_blank">[新闻]微软老矣 尚能赚否？</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>Sql 附加数据库出错解决方案</title><link>http://www.cnblogs.com/viki117/archive/2008/08/28/1278919.html</link><dc:creator>昨夜飘风</dc:creator><author>昨夜飘风</author><pubDate>Thu, 28 Aug 2008 12:15:00 GMT</pubDate><guid>http://www.cnblogs.com/viki117/archive/2008/08/28/1278919.html</guid><wfw:comment>http://www.cnblogs.com/viki117/comments/1278919.html</wfw:comment><comments>http://www.cnblogs.com/viki117/archive/2008/08/28/1278919.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/viki117/comments/commentRss/1278919.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/viki117/services/trackbacks/1278919.html</trackback:ping><description><![CDATA[新建一同名数据库（文件名，文件组都和原来的一样），然后停止数据库服务，用原来文件替换新建的数 &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 据库文件，启动数据库，该数据库被设未suspect &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 然后把数据库改成紧急模式： &nbsp; <br />
&nbsp; sp_configure &nbsp; 'allow', &nbsp; 1 &nbsp; <br />
&nbsp; reconfigure &nbsp; with &nbsp; override &nbsp; <br />
&nbsp; update &nbsp; sysdatabases &nbsp; set &nbsp; status &nbsp; = &nbsp; 32768 &nbsp; where &nbsp; name &nbsp; = &nbsp; '数据库名' &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 把LDF文件改名，再执行 &nbsp; <br />
&nbsp; DBCC &nbsp; REBUILD_LOG &nbsp; ('数据库名'&nbsp;&nbsp;, &nbsp; 'd:\data\glsisp_log.ldf' &nbsp; ) &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 恢复数据库紧急模式 &nbsp; <br />
&nbsp; update &nbsp; sysdatabases &nbsp; set &nbsp; status &nbsp; = &nbsp; 0 &nbsp; where &nbsp; name &nbsp; = &nbsp; '数据库名' &nbsp; <br />
&nbsp; 执行 &nbsp; <br />
&nbsp; --restore &nbsp; database &nbsp; 数据库名 &nbsp; WITH &nbsp; RECOVERY &nbsp; <br />
&nbsp; sp_configure &nbsp; 'allow', &nbsp; 0 &nbsp; <br />
&nbsp; reconfigure &nbsp; with &nbsp; override &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 然后用DBCC &nbsp; CHECKDB &nbsp; ('数据库名')看看有没有错误 &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 如果上面还是不行，试试吧数据库设为紧急模式，应该可以看到数据了，在把数据导出到一个新的数据库
<img src ="http://www.cnblogs.com/viki117/aggbug/1278919.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42832/" target="_blank">[新闻]YouTube探索新赢利模式 开始售音乐、视频游戏</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>事务管理--系统需求分析</title><link>http://www.cnblogs.com/viki117/archive/2008/08/14/1268054.html</link><dc:creator>昨夜飘风</dc:creator><author>昨夜飘风</author><pubDate>Thu, 14 Aug 2008 08:58:00 GMT</pubDate><guid>http://www.cnblogs.com/viki117/archive/2008/08/14/1268054.html</guid><wfw:comment>http://www.cnblogs.com/viki117/comments/1268054.html</wfw:comment><comments>http://www.cnblogs.com/viki117/archive/2008/08/14/1268054.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/viki117/comments/commentRss/1268054.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/viki117/services/trackbacks/1268054.html</trackback:ping><description><![CDATA[&nbsp;
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">事务管理系统的目标：实现统一事务的跟踪系统，完成各种事务的跟踪，及其各事务之间的关联，达成事务的管理。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-indent: 21.75pt"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">系统特色：</span><span lang="EN-US">1.</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">灵活的自定义事物，满足所有事物内容的需求</span></p>
<p class="MsoNormal" style="text-indent: 21.75pt"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp; </span>2.</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">灵活的流程制定，适应各种事务的复杂流程的要求</span></p>
<p class="MsoNormal" style="text-indent: 21.75pt"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp; </span>3.</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">灵活的查询系统，实现查询的自定义组合及其关联查询</span></p>
<p class="MsoNormal" style="text-indent: 21.75pt"><span lang="EN-US"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>4.</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">灵活的展现功能，根据用户的要求实现查询结果的展现</span></p>
<p class="MsoNormal" style="text-indent: 21.75pt"><span lang="EN-US"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>5.</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">自由的事务评论和摘文，达成知识积累的效果</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在事务管理系统中，有三个主要实体：</span></p>
<p class="MsoNormal" style="margin-left: 189pt; text-indent: 21pt"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一个是事务，</span></p>
<p class="MsoNormal" style="margin-left: 189pt; text-indent: 21pt"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一个是用户，</span></p>
<p class="MsoNormal" style="margin-left: 189pt; text-indent: 21pt"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一个是状态。</span></p>
<p class="MsoNormal" style="margin-left: 189pt; text-indent: 21pt"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">另外还有两个重要的逻辑实体：用户的排列，称之为流程；事务和用户的集合，称之为项目。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-indent: 21pt"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在事务上，为了满足不同需求，需要实现事务内容的自定义，在尽可能的范围，提供各种数据类型及其约束条件；其次是模板查询条件的定义，根据定义的查询条件来实现同模板事务的过滤，所有对事物的查询都通过自定义的条件来实现；事务的展现也采用用户自定义模式</span><span lang="EN-US">,</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">用户选择需要查询出来的内容和排版，当然用户也可以采用系统默认的。</span></p>
<p class="MsoNormal" style="text-indent: 21pt"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在用户上，用户虽然还是需要分部分职位，但是只是一种方便检索用户的条件</span><span lang="EN-US">;</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在对待事务的权限方面</span><span lang="EN-US">,</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">使用组和个人两种混合模式</span><span lang="EN-US">,</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">组是权限的集合</span><span lang="EN-US">,</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">优先关系先是个人权限</span><span lang="EN-US">;</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">权限明细有待制定</span><span lang="EN-US">,</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">权限的范围基本是项目范围里的</span><span lang="EN-US">,</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">但是需要全局的一个项目建立权限</span><span lang="EN-US">.</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">关于项目，是一组事务的集合，再结合参与项目的用户；一个项目可以包含多个事务模板，用来满足项目中各种事务的需求；项目事务流程必须围绕参与项目的用户。项目在本事务系统中是最后的归类，所有的事务必须有所属的项目，事务的运做都围绕在项目规定的范围内的，项目里的用户对项目里的事务操作</span><span lang="EN-US">,</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">受项目权限的约制</span><span lang="EN-US">.</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">关于流程，是用户的一组排列，事务根据这组排列进行传递，每组流程中，只允许使用同一个事务模板，既是每组流程只完成一个事务；流程是有分和合构成的</span><span lang="EN-US">,</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">满足事务的并发和协同处理</span><span lang="EN-US">.</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">根据上述事务管理系统的描述进行分析后，可以获得如下功能性需求</span></p>
<p class="MsoNormal" style="margin-left: 39pt; text-indent: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">(1)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">用户基础资料的编辑</span></p>
<p class="MsoNormal" style="margin-left: 39pt; text-indent: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">(2)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">权限组的编辑</span></p>
<p class="MsoNormal" style="margin-left: 39pt; text-indent: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">(3)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">用户权限的指派</span></p>
<p class="MsoNormal" style="margin-left: 39pt; text-indent: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">(4)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">特殊用户新建和修改事务模板</span></p>
<p class="MsoNormal" style="margin-left: 39pt; text-indent: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">(5)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">特殊用户定义模板之间的关联字段</span></p>
<p class="MsoNormal" style="margin-left: 39pt; text-indent: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">(6)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">特殊用户项目组的添加和删除</span></p>
<p class="MsoNormal" style="margin-left: 39pt; text-indent: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">(7)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">特殊用户项目组的事务和用户的编辑</span></p>
<p class="MsoNormal" style="margin-left: 39pt; text-indent: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">(8)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">事务模板默认查询条件的制定</span></p>
<p class="MsoNormal" style="margin-left: 39pt; text-indent: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">(9)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">事务查询结果展现的自定义</span></p>
<p class="MsoNormal" style="margin-left: 39pt; text-indent: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">(10)</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">用户选择项目，使用模板并制定流程，生成事务流</span></p>
<p class="MsoNormal" style="margin-left: 39pt; text-indent: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">(11)</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">用户查看事务列表，执行事务流程，完成后启动下面的流程</span></p>
<p class="MsoNormal" style="margin-left: 39pt; text-indent: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">(12)</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">事务的转发（换班，离职接任，委托）</span></p>
<p class="MsoNormal" style="margin-left: 39pt; text-indent: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">(13)</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">事务的查询和展现</span></p>
<p class="MsoNormal" style="margin-left: 39pt; text-indent: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">(14)</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">事务的自然完结</span></p>
<p class="MsoNormal" style="margin-left: 39pt; text-indent: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">(15)</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">特殊用户强行结束事务</span></p>
<p class="MsoNormal" style="margin-left: 39pt; text-indent: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">(16)</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">事务的记录和知识发布</span></p>
<p class="MsoNormal" style="margin-left: 39pt; text-indent: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">(17)</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">系统数据词典</span><span lang="EN-US">,</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">供用户查看</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin-left: 21pt"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">关于事务的展现，暂定必须有三种模式：一是日历模式，一是树模式，一是列表模式。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">列表模式应该普通用户最常用的模式，系统默认的查看方式；日期模式适合带有日期字段的事物的查询，可以实现跨模板查询，但无日期的事物无法展现；树模式是针对有分类的事务模板的事务进行分类展现，对无分类或者跨模板事务无法应用。</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">查询约束条件：</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">日历模式：事务必须有日期字段</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">树模式：事物必须有分类字段，而且只能针对同一模板的事务，不能跨模板</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">列表模式：无特殊要求，只根据查询条件，查询所有符合条件的事务</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">最后，为了是大部分用户的操作简单化，系统会把绝大部分复杂的定义和操作，集中到权限用户。</span></p>
<img src ="http://www.cnblogs.com/viki117/aggbug/1268054.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42831/" target="_blank">[新闻]英特尔Core i7将继续称王 性能提52%</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>C#高级编程：ServiceController类</title><link>http://www.cnblogs.com/viki117/archive/2008/08/08/1263746.html</link><dc:creator>昨夜飘风</dc:creator><author>昨夜飘风</author><pubDate>Fri, 08 Aug 2008 06:39:00 GMT</pubDate><guid>http://www.cnblogs.com/viki117/archive/2008/08/08/1263746.html</guid><wfw:comment>http://www.cnblogs.com/viki117/comments/1263746.html</wfw:comment><comments>http://www.cnblogs.com/viki117/archive/2008/08/08/1263746.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/viki117/comments/commentRss/1263746.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/viki117/services/trackbacks/1263746.html</trackback:ping><description><![CDATA[<p><span style="color: black; font-family: 宋体; letter-spacing: 0.1pt">下面创建一个小的</span><span style="color: black; letter-spacing: 0.1pt">Windows</span><span style="color: black; font-family: 宋体; letter-spacing: 0.1pt">应用程序，该应用程序使用</span><span style="color: black; letter-spacing: 0.1pt">ServiceController</span><span style="color: black; font-family: 宋体; letter-spacing: 0.1pt">类监视和控制</span><span style="color: black; letter-spacing: 0.1pt">Windows</span><span style="color: black; font-family: 宋体; letter-spacing: 0.1pt">服务。</span></p>
<p><span style="color: black; font-family: 宋体">创建一个</span><span style="color: black; letter-spacing: 0.1pt">Windows</span><span style="color: black; font-family: 宋体; letter-spacing: 0.1pt">窗体应用程序，</span><span style="color: black; font-family: 宋体">这个应用程序的用户界面包含一个显示所有服务的列表框、</span><span style="color: black">4</span><span style="color: black; font-family: 宋体">个文本框</span><span style="color: black">(</span><span style="color: black; font-family: 宋体">分别用于显示服务的显示名称、状态、类型和名称</span><span style="color: black">)</span><span style="color: black; font-family: 宋体">，以及</span><span style="color: black">4</span><span style="color: black; font-family: 宋体">个发送控制事件的按钮，如图</span><span style="color: black">32-18</span><span style="color: black; font-family: 宋体">所示。</span></p>
<p align="center"><img height="189" alt="" src="http://book.csdn.net/BookFiles/16/32/image019.jpg" width="312" /></p>
<p style="ftel: 8.15pt" align="center"><span style="color: black; font-family: 宋体">图</span><span style="color: black">&nbsp; 32-18</span></p>
<p><span style="color: black; font-family: 宋体">这里使用了</span><span style="color: black">System.ServiceProcess.ServiceController</span><span style="color: black; font-family: 宋体">类，因此必须引用</span><span style="color: black">System.Service Process.dll</span><span style="color: black; font-family: 宋体">。</span></p>
<p><span style="color: black; font-family: 宋体">这里还执行了</span><span style="color: black">RefreshServiceList()</span><span style="color: black; font-family: 宋体">方法，用下面的代码在列表框中列出所有的服务。这个方法是在</span><span style="color: black">ServiceControlForm</span><span style="color: black; font-family: 宋体">类的构造函数中调用的。该方法用所有服务的显示名称填写</span><span style="color: black">listbox</span><span style="color: black; font-family: 宋体">。</span><span style="color: black">GetServics()</span><span style="color: black; font-family: 宋体">是</span><span style="color: black">ServiceController</span><span style="color: black; font-family: 宋体">类的一个静态方法，它返回一个代表所有</span><span style="color: black">Windows</span><span style="color: black; font-family: 宋体">服务的</span><span style="color: black">ServiceController</span><span style="color: black; font-family: 宋体">数组。</span><span style="color: black">ServiceController</span><span style="color: black; font-family: 宋体">类也有一个静态的方法</span><span style="color: black">GetDevices()</span><span style="color: black; font-family: 宋体">，它返回一个代表所有设备驱动器的</span><span style="color: black">ServiceController</span><span style="color: black; font-family: 宋体">数组。</span></p>
<p style="margin-left: 0cm; ftel: 21.25pt"><span style="font-size: 10.5pt; color: black; font-style: normal; font-family: 宋体; letter-spacing: 0pt">把</span><span style="font-size: 10.5pt; color: black; font-style: normal; font-family: ~Times New Roman~; letter-spacing: 0pt">ServiceController. GetServics()</span><span style="font-size: 10.5pt; color: black; font-style: normal; font-family: 宋体; letter-spacing: 0pt">绑定到</span><span style="font-size: 10.5pt; color: black; font-style: normal; font-family: ~Times New Roman~; letter-spacing: 0pt">ListBox</span><span style="font-size: 10.5pt; color: black; font-style: normal; font-family: 宋体; letter-spacing: 0pt">上，填充列表框：</span></p>
<p style="margin-top: 8.15pt; margin-left: 21.45pt; margin-right: 0cm; ftel: 18.45pt">&nbsp; private System.ServiceProcess.ServiceController[] services;</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">&nbsp;</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">&nbsp; public ServiceControlForm()</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">&nbsp; {</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">//</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">// Required for Windows Form Designer support</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">//</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">&nbsp;</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">InitializeComponent();</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">&nbsp; &nbsp;RefreshServiceList();</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">&nbsp; }</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">&nbsp; protected void RefreshServiceList()</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">&nbsp; {</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">services = ServiceController.GetServices();</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">listBoxServices.DisplayMember = "DisplayName";</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">listBoxServices.DataSource = services;</p>
<p style="margin-top: 0cm; margin-left: 21.45pt; margin-right: 0cm; ftel: 18.45pt">&nbsp; }</p>
<p><span style="color: black; font-family: 宋体">现在，所有的</span><span style="color: black">Windows</span><span style="color: black; font-family: 宋体">服务都显示在列表框中。接下来，必须获取服务的信息，把它们显示在文本框中。</span></p>
<h4>1. <span style="font-family: 黑体">服务的监视</span></h4>
<p><span style="color: black; font-family: 宋体">使用</span><span style="color: black">ServiceController</span><span style="color: black; font-family: 宋体">类，可以获取每一个服务的信息。</span><span style="color: black">ServiceController</span><span style="color: black; font-family: 宋体">类的下列属性可以用于获取服务的信息，如表</span><span style="color: black">32-4</span><span style="color: black; font-family: 宋体">所示。</span></p>
<p style="margin-top: 8.15pt"><span style="color: black; font-family: 黑体">表</span><span style="color: black">&nbsp; 32-4</span></p>
<div align="center">
<table style="border-right: medium none; border-top: medium none; margin-left: -7.95pt; border-left: medium none; border-bottom: medium none; border-collapse: collapse" cellspacing="0" cellpadding="0" border="1">
    <tr style="page-break-inside: avoid">
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 117.3pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="156">
            <p><span style="color: black; font-family: 黑体">属</span>&nbsp;<span style="color: black; font-family: 黑体">性</span></p>
            </td>
            <td style="border-right: medium none; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 321.3pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="428">
            <p><span style="color: black; font-family: 黑体">描</span>&nbsp;<span style="color: black; font-family: 黑体">述</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 117.3pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="156">
            <p style="margin-left: 10.7pt"><span style="color: black">CanPauseAndContinue</span></p>
            </td>
            <td style="border-right: medium none; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 321.3pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="428">
            <p style="margin-left: 10.7pt"><span style="color: black; font-family: 宋体">如果暂停和继续服务的请求可以发送给服务，则这个属性返回</span><span style="color: black">true</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 117.3pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="156">
            <p style="margin-left: 10.7pt"><span style="color: black">CanShutdown</span></p>
            </td>
            <td style="border-right: medium none; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 321.3pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="428">
            <p style="margin-left: 10.7pt"><span style="color: black; font-family: 宋体">如果服务有系统关闭的处理程序，则它的值为</span><span style="color: black">true</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 117.3pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="156">
            <p style="margin-left: 10.7pt"><span style="color: black">CanStop</span></p>
            </td>
            <td style="border-right: medium none; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 321.3pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="428">
            <p style="margin-left: 10.7pt"><span style="color: black; font-family: 宋体">如果服务是可以停止的，则它的值为</span><span style="color: black">true</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 117.3pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="156">
            <p style="margin-left: 10.7pt"><span style="color: black">DependentServices</span></p>
            </td>
            <td style="border-right: medium none; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 321.3pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="428">
            <p style="margin-left: 10.7pt"><span style="color: black; font-family: 宋体">它返回一个依存服务的集合。如果服务停止，则所有依存的服务都预先停止</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 117.3pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="156">
            <p style="margin-left: 10.7pt"><span style="color: black">ServicesDependentOn</span></p>
            </td>
            <td style="border-right: medium none; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 321.3pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="428">
            <p style="margin-left: 10.7pt"><span style="color: black; font-family: 宋体">这个属性返回这个服务所依存的服务集合</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 117.3pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="156">
            <p style="margin-left: 10.7pt"><span style="color: black">DisplayName</span></p>
            </td>
            <td style="border-right: medium none; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 321.3pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="428">
            <p style="margin-left: 10.7pt"><span style="color: black; font-family: 宋体">这个属性返回服务应该显示的名称</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 117.3pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="156">
            <p style="margin-left: 10.7pt"><span style="color: black">MachineName</span></p>
            </td>
            <td style="border-right: medium none; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 321.3pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="428">
            <p style="margin-left: 10.7pt"><span style="color: black; font-family: 宋体">这个属性返回运行服务的机器名</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 117.3pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="156">
            <p style="margin-left: 10.7pt"><span style="color: black">ServiceName</span></p>
            </td>
            <td style="border-right: medium none; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 321.3pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="428">
            <p style="margin-left: 10.7pt"><span style="color: black; font-family: 宋体">服务的名称</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 117.3pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="156">
            <p style="margin-left: 10.7pt"><span style="color: black">ServiceType</span></p>
            </td>
            <td style="border-right: medium none; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 321.3pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="428">
            <p style="margin-left: 10.7pt"><span style="color: black; font-family: 宋体">指定服务的类型。</span><span style="color: black; font-family: 宋体">服务可以运行在共享的进程中。在共享的进程中，多个服务使用同一进程</span><span style="color: black">(Win32ShareProcess)</span><span style="color: black; font-family: 宋体">，此外，服务也可以运行在只包含一个服务的进程</span><span style="color: black">(Win32OwnProcess)</span><span style="color: black; font-family: 宋体">中。如果服务可以与桌面交互，则类型就是</span><span style="color: black">InteractiveProcess</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 117.3pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="156">
            <p style="margin-left: 10.7pt"><span style="color: black">Status</span></p>
            </td>
            <td style="border-right: medium none; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 321.3pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="428">
            <p style="margin-left: 10.7pt"><span style="color: black; font-family: 宋体">这个属性返回服务的状态。状态可以是正在运行、停止、暂停或某些中间模式</span><span style="color: black">(</span><span style="color: black; font-family: 宋体">如启动待决、停止待决</span><span style="color: black">)</span><span style="color: black; font-family: 宋体">等。状态值在</span><span style="color: black">ServiceControllerStatus</span><span style="color: black; font-family: 宋体">枚举中定义</span></p>
            </td>
        </tr>
    </table>
</div>
<p style="margin-top: 8.15pt"><span style="color: black; font-family: 宋体">在上面的应用程序中，使用</span><span style="color: black">DisplayName</span><span style="color: black; font-family: 宋体">、</span><span style="color: black">ServiceName</span><span style="color: black; font-family: 宋体">、</span><span style="color: black">ServiceType</span><span style="color: black; font-family: 宋体">和</span><span style="color: black">Status</span><span style="color: black; font-family: 宋体">属性显示服务信息。此外，</span><span style="color: black">CanPauseAndContinue</span><span style="color: black; font-family: 宋体">和</span><span style="color: black">CanStop</span><span style="color: black; font-family: 宋体">用于启用和禁用</span><span style="color: black">Pause</span><span style="color: black; font-family: 宋体">、</span><span style="color: black">Continue</span><span style="color: black; font-family: 宋体">和</span><span style="color: black">Stop</span><span style="color: black; font-family: 宋体">按钮。</span></p>
<p><span style="color: black; font-family: 宋体">服务的状态和类型的设置就比较麻烦了，原因是</span><span style="color: black">ServiceController</span><span style="color: black; font-family: 宋体">类返回的是数字，而显示时却要使用字符串代替数字。为了把状态和类型显示为字符串，需要使用两个帮助函数</span><span style="color: black">SetServiceStatus()</span><span style="color: black; font-family: 宋体">和</span><span style="color: black">GetServiceTypeName()</span><span style="color: black; font-family: 宋体">。</span></p>
<p><span style="color: black; font-family: 宋体">方法</span><span style="color: black">SetServiceStatus()</span><span style="color: black; font-family: 宋体">返回一个字符串，表示服务的类型。根据传送给</span>ServiceType<span style="font-family: 宋体">参数的类型返回一个字符串。从</span>ServiceController.ServiceType<span style="font-family: 宋体">属性中得到的</span>ServiceType<span style="font-family: 宋体">代表一组标记，使用按位</span>OR<span style="font-family: 宋体">运算符，可以把这组标记组合在一起。</span>InteractiveProcess<span style="font-family: 宋体">位可以与</span>Win32OwnProcess<span style="font-family: 宋体">和</span>Win32ShareProcess<span style="font-family: 宋体">一起设置。首先，在检查其他的值之前，一定要先检查</span>InteractiveProcess<span style="font-family: 宋体">位以前是否设置过。使用该服务，返回的字符串是&#8220;</span>Win 32 Service Process<span style="font-family: 宋体">&#8221;或&#8220;</span>Win 32 Shared Process<span style="font-family: 宋体">&#8221;。</span></p>
<p style="margin-top: 8.15pt; margin-left: 21.45pt; margin-right: 0cm; ftel: 18.45pt">&nbsp; protected string GetServiceTypeName(ServiceType type)</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">&nbsp; {</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">string serviceType = "";</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">if ((type &amp; ServiceType.InteractiveProcess) != 0)</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">{</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">&nbsp; serviceType = "Interactive ";</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">&nbsp; type -= ServiceType.InteractiveProcess;</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">}</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">switch (type)</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">{</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">&nbsp; case ServiceType.Adapter:</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">serviceType += "Adapter";</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">break;</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">&nbsp; case ServiceType.FileSystemDriver:</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">&nbsp; case ServiceType.KernelDriver:</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">&nbsp; case ServiceType.RecognizerDriver:</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">serviceType += "Driver";</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">break;</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">&nbsp; case ServiceType.Win32OwnProcess:</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">serviceType += "Win32 Service Process";</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">&nbsp; &nbsp;break;</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">&nbsp; case ServiceType.Win32ShareProcess:</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">serviceType += "Win32 Shared Process";</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">break;</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">&nbsp; default:</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">serviceType += "unknown type " + type.ToString();</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">break;</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">&nbsp; &nbsp;}</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">return serviceType;</p>
<p style="margin-top: 0cm; margin-left: 21.45pt; margin-right: 0cm; ftel: 18.45pt">&nbsp; }</p>
<p><span style="font-family: 宋体">方法</span><span style="color: black">SetServiceStatus()</span><span style="color: black; font-family: 宋体">在文本框</span><span style="color: black">textServiceStatus</span><span style="color: black; font-family: 宋体">中设置服务的当前状态。根据服务的状态，可以启用或禁用</span><span style="color: black">Start</span><span style="color: black; font-family: 宋体">、</span><span style="color: black">Stop</span><span style="color: black; font-family: 宋体">、</span><span style="color: black">Pause</span><span style="color: black; font-family: 宋体">和</span><span style="color: black">Continue</span><span style="color: black; font-family: 宋体">按钮。</span></p>
<p style="margin-top: 8.15pt; margin-left: 21.45pt; margin-right: 0cm; ftel: 18.45pt">&nbsp; protected void SetServiceStatus(ServiceController controller) </p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">&nbsp; {</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">buttonStart.Enabled = true;</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">buttonStop.Enabled = true;</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">buttonPause.Enabled = true;</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">buttonContinue.Enabled = true;</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">if (!controller.CanPauseAndContinue)</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">{</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">&nbsp; buttonPause.Enabled = false;</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">&nbsp; buttonContinue.Enabled = false;</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">}</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">if (!controller.CanStop)</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">&nbsp; &nbsp;{</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">&nbsp; buttonStop.Enabled = false;</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">}</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">ServiceControllerStatus status = controller.Status;</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">switch (status)</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">{</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">&nbsp; case ServiceControllerStatus.ContinuePending:</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">textBoxServiceStatus.Text = "Continue Pending";</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">buttonContinue.Enabled = false;</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">break;</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">&nbsp; case ServiceControllerStatus.Paused:</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">textBoxServiceStatus.Text = "Paused";</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">buttonPause.Enabled = false; </p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">&nbsp; &nbsp;buttonStart.Enabled = false;</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">break;</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">&nbsp; case ServiceControllerStatus.PausePending:</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">textBoxServiceStatus.Text = "Pause Pending";</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">buttonPause.Enabled = false; </p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">buttonStart.Enabled = false;</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">break;</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">&nbsp; case ServiceControllerStatus.StartPending:</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">textBoxServiceStatus.Text = "Start Pending";</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">buttonStart.Enabled = false;</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">break;</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">&nbsp; case ServiceControllerStatus.Running:</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">textBoxServiceStatus.Text = "Running";</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">buttonStart.Enabled = false; </p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">buttonContinue.Enabled = false;</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">break;</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">&nbsp; case ServiceControllerStatus.Stopped:</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">textBoxServiceStatus.Text = "Stopped";</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">buttonStop.Enabled = false;</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">break;</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">&nbsp; case ServiceControllerStatus.StopPending:</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">textBoxServiceStatus.Text = "Stop Pending";</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">buttonStop.Enabled = false;</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">break;</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">&nbsp; default:</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">textServiceStatus.Text = "Unknown status";</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">break;</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">&nbsp;</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">&nbsp; }</p>
<p>OnSelectedIndexChanged ()<span style="font-family: 宋体">是列表框事件</span>SelectedIndexChanged<span style="font-family: 宋体">的处理程序。当用户选择列表框事件中的一个服务时，就会调用这个处理程序。在</span>OnSelectedIndexChanged()<span style="font-family: 宋体">中，直接使用</span>ServiceController<span style="font-family: 宋体">类的属性来设置服务的显示名称和名称。调用帮助方法</span>GetServiceTypeName()<span style="font-family: 宋体">来设置服务类型。</span></p>
<p style="margin-top: 8.15pt; margin-left: 21.45pt; margin-right: 0cm; ftel: 18.45pt">&nbsp; protected void OnSelectedIndexChanged (object sender, </p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">System.EventArgs e)</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">&nbsp; {</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">ServiceController controller = </p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">(ServiceController)listBoxServices.SelectedItem;</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">textBoxDisplayName.Text = controller.DisplayName;</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">textBoxServiceType.Text = GetServiceTypeName(controller.Se<span style="letter-spacing: 0.1pt">rviceType);</span></p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">textBoxServiceName.Text = controller.ServiceName;</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">SetServiceStatus(controller);</p>
<p style="margin-top: 0cm; margin-left: 21.45pt; margin-right: 0cm; ftel: 18.45pt">&nbsp; }</p>
<h4>2. <span style="font-family: 黑体">服务的控制</span></h4>
<p><span style="font-family: 宋体">使用</span>ServiceController<span style="font-family: 宋体">类，也可以把控制请求发送给服务，该类的方法如表</span>32-5<span style="font-family: 宋体">所示。</span></p>
<p style="margin-top: 8.15pt"><span style="color: black; font-family: 黑体">表</span><span style="color: black">&nbsp; 32-5</span></p>
<div align="center">
<table style="border-right: medium none; border-top: medium none; margin-left: 19.95pt; border-left: medium none; width: 440.2pt; border-bottom: medium none; border-collapse: collapse" cellspacing="0" cellpadding="0" width="587" border="1">
    <tr style="page-break-inside: avoid">
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 99.1pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="132">
            <p><span style="color: black; font-family: 黑体">方</span>&nbsp;<span style="color: black; font-family: 黑体">法</span></p>
            </td>
            <td style="border-right: medium none; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 341.1pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="455">
            <p><span style="color: black; font-family: 黑体">说</span>&nbsp;<span style="color: black; font-family: 黑体">明</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 99.2pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="132">
            <p style="margin-left: 10.7pt"><span style="color: black">Start()</span></p>
            </td>
            <td style="border-right: medium none; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 341pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="455">
            <p style="margin-left: 10.7pt"><span style="color: black">Start() </span><span style="color: black; font-family: 宋体">告诉</span><span style="color: black">SCM</span><span style="color: black; font-family: 宋体">应启动服务。在我们的服务程序中，调用了</span><span style="color: black">OnStart()</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 99.2pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="132">
            <p style="margin-left: 10.7pt"><span style="color: black">Stop()</span></p>
            </td>
            <td style="border-right: medium none; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 341pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="455">
            <p style="margin-left: 10.7pt"><span style="color: black; font-family: 宋体">如果</span><span style="color: black">CanStop</span><span style="color: black; font-family: 宋体">属性在服务类中的值是</span><span style="color: black">true</span><span style="color: black; font-family: 宋体">，则在</span><span style="color: black">SCM</span><span style="color: black; font-family: 宋体">的帮助下，</span><span style="color: black">Stop()</span><span style="color: black; font-family: 宋体">调用服务程序中的</span><span style="color: black">OnStop()</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 99.2pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="132">
            <p style="margin-left: 10.7pt"><span style="color: black">Pause()</span></p>
            </td>
            <td style="border-right: medium none; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 341pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="455">
            <p style="margin-left: 10.7pt"><span style="color: black; font-family: 宋体">如果</span><span style="color: black">CanPauseAndContinue</span><span style="color: black; font-family: 宋体">属性的值是</span><span style="color: black">true</span><span style="color: black; font-family: 宋体">，则</span><span style="color: black">Pause() </span><span style="color: black; font-family: 宋体">调用</span><span style="color: black">OnPause()</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 99.2pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="132">
            <p style="margin-left: 10.7pt"><span style="color: black">Continue()</span></p>
            </td>
            <td style="border-right: medium none; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 341pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="455">
            <p style="margin-left: 0cm; ftel: 9.2pt"><span style="color: black; font-family: 宋体">如果</span><span style="color: black">CanPauseAndContinue</span><span style="color: black; font-family: 宋体">属性的值是</span><span style="color: black">true</span><span style="color: black; font-family: 宋体">，则</span><span style="color: black">Continue</span><span style="color: black; font-family: 宋体">调用</span><span style="color: black">OnContinue()</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 99.2pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="132">
            <p style="margin-left: 10.7pt"><span style="color: black">ExecuteCommand()</span></p>
            </td>
            <td style="border-right: medium none; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 341pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="455">
            <p style="margin-left: 10.7pt"><span style="color: black; font-family: 宋体">使用</span><span style="color: black"> ExecuteCommand()</span><span style="color: black; font-family: 宋体">可以把定制的命令发送给服务</span></p>
            </td>
        </tr>
    </table>
</div>
<p><span style="font-family: 宋体">下面的代码就是控制服务的代码。因为启动、停止、挂起和暂停服务的代码是相似的，所以仅为这</span>4<span style="font-family: 宋体">个按钮使用一个处理程序：</span></p>
<p style="margin-top: 8.15pt; margin-left: 21.45pt; margin-right: 0cm; ftel: 18.45pt">&nbsp; protected void buttonCommand<span style="font-family: ~Baskerville BE Regular~">_</span>Click(object sender, System.EventArgs e) </p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">&nbsp; {</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">Cursor.Current = Cursors.WaitCursor;</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">ServiceController controller = </p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">(ServiceController)listBoxServices.SelectedItem;</p>
<p style="margin-left: 21.45pt; ftel: 18.45pt">if (sender == this.buttonStart)</p>
<p style="margin-left: 21.45pt; line-height: 14.5pt; ftel: 18.45pt">{</p>
<p style="margin-left: 21.45pt; line-height: 14.5pt; ftel: 18.45pt">&nbsp; controller.Start();</p>
<p style="margin-left: 21.45pt; line-height: 14.5pt; ftel: 18.45pt">&nbsp; controller.WaitForStatus(ServiceControllerStatus.Running);</p>
<p style="margin-left: 21.45pt; line-height: 14.5pt; ftel: 18.45pt">}</p>
<p style="margin-left: 21.45pt; line-height: 14.5pt; ftel: 18.45pt">else if (sender == this.buttonStop)</p>
<p style="margin-left: 21.45pt; line-height: 14.5pt; ftel: 18.45pt">{</p>
<p style="margin-left: 21.45pt; line-height: 14.5pt; ftel: 18.45pt">&nbsp; controller.Stop();</p>
<p style="margin-left: 21.45pt; line-height: 14.5pt; ftel: 18.45pt">&nbsp; controller.WaitForStatus(ServiceControllerStatus.Stopped);</p>
<p style="margin-left: 21.45pt; line-height: 14.5pt; ftel: 18.45pt">}</p>
<p style="margin-left: 21.45pt; line-height: 14.5pt; ftel: 18.45pt">else if (sender == this.buttonPause)</p>
<p style="margin-left: 21.45pt; line-height: 14.5pt; ftel: 18.45pt">{</p>
<p style="margin-left: 21.45pt; line-height: 14.5pt; ftel: 18.45pt">&nbsp; controller.Pause();</p>
<p style="margin-left: 21.45pt; line-height: 14.5pt; ftel: 18.45pt">&nbsp; controller.WaitForStatus(ServiceControllerStatus.Paused);</p>
<p style="margin-left: 21.45pt; line-height: 14.5pt; ftel: 18.45pt">}</p>
<p style="margin-left: 21.45pt; line-height: 14.5pt; ftel: 18.45pt">else if (sender == this.buttonContinue)</p>
<p style="margin-left: 21.45pt; line-height: 14.5pt; ftel: 18.45pt">{</p>
<p style="margin-left: 21.45pt; line-height: 14.5pt; ftel: 18.45pt">&nbsp; controller.Continue();</p>
<p style="margin-left: 21.45pt; line-height: 14.5pt; ftel: 18.45pt">&nbsp; controller.WaitForStatus(ServiceControllerStatus.Running);</p>
<p style="margin-left: 21.45pt; line-height: 14.5pt; ftel: 18.45pt">}</p>
<p style="margin-left: 21.45pt; line-height: 14.5pt; ftel: 18.45pt">int index =listBoxServices.SelectedIndex;</p>
<p style="margin-left: 21.45pt; line-height: 14.5pt; ftel: 18.45pt">RefreshServiceList();</p>
<p style="margin-left: 21.45pt; line-height: 14.5pt; ftel: 18.45pt">listBoxServices.SelectedIndex = index;</p>
<p style="margin-left: 21.45pt; line-height: 14.5pt; ftel: 18.45pt">Cursor.Current = Cursors.Default;</p>
<p style="margin-left: 21.45pt; line-height: 14.5pt; ftel: 18.45pt">&nbsp; }</p>
<p style="margin-left: 21.45pt; line-height: 14.5pt; ftel: 18.45pt">&nbsp;</p>
<p style="margin-left: 21.45pt; line-height: 14.5pt; ftel: 18.45pt">&nbsp; protected void buttonExit<span style="font-family: ~Baskerville BE Regular~">_</span>Click(object sender, System.EventArgs e)</p>
<p style="margin-left: 21.45pt; line-height: 14.5pt; ftel: 18.45pt">&nbsp; {</p>
<p style="margin-left: 21.45pt; line-height: 14.5pt; ftel: 18.45pt">Application.Exit();</p>
<p style="margin-left: 21.45pt; line-height: 14.5pt; ftel: 18.45pt">&nbsp; }</p>
<p style="margin-left: 21.45pt; line-height: 14.5pt; ftel: 18.45pt">&nbsp; protected void buttonRefresh<span style="font-family: ~Baskerville BE Regular~">_</span>Click(object sender, System.EventArgs e)</p>
<p style="margin-left: 21.45pt; line-height: 14.5pt; ftel: 18.45pt">&nbsp; {</p>
<p style="margin-left: 21.45pt; line-height: 14.5pt; ftel: 18.45pt">RefreshServiceList();</p>
<p style="margin-top: 0cm; margin-left: 21.45pt; margin-right: 0cm; ftel: 18.45pt">&nbsp; }</p>
<p style="line-height: 18pt"><span style="font-family: 宋体">由于控制服务要花费一定的时间，因此，光标在第一个语句中切换为等待光标。然后，根据被按的按钮调用</span>ServiceController<span style="font-family: 宋体">方法。使用</span>WaitForStatus()<span style="font-family: 宋体">方法，等待服务把状态改为被请求的值，但是，我们最多等待</span>10<span style="font-family: 宋体">秒。在</span>10<span style="font-family: 宋体">秒之后，就会刷新列表框中的信息，其目的是当用户选择与以前相同的服务时，服务的新状态能够显示出来。</span></p>
<p style="line-height: 18pt"><span style="font-family: 宋体">最后运行的应用程序结果如