100165813.htm

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

HTM
597
字号
letter-spacing:.2pt'>用于计算请求的总数,而</span><span lang=EN-US style='letter-spacing:
.2pt'>IncrementBy()</span><span style='font-family:宋体;letter-spacing:.2pt'>方法计算发送的字节总数。</span></p>

<p class=MsoNormal><span style='font-family:宋体'>对于按秒显示值的性能计数而言</span><span
style='font-family:宋体'>,</span><span style='font-family:宋体'>在</span><span
lang=EN-US>Listener()</span><span style='font-family:宋体'>方法中只更新</span><span
lang=EN-US>requestsPerSec</span><span style='font-family:宋体'>和</span><span
lang=EN-US>bytessPerSec</span><span style='font-family:宋体'>变量</span><span
style='font-family:宋体'>:</span></p>

<p class=a6 style='margin-top:8.15pt;margin-right:0cm;FTEL:0cm;
margin-left:21.45pt;FTEL:.0001pt;FTEL:18.45pt'><span
lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected void Listener()</span></p>

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

<p class=a6 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.5pt'><span
lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try</span></p>

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

<p class=a6 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.5pt'><span
lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
listener = new TCPListener(port);</span></p>

<p class=a6 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.5pt'><span
lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
listener.Start(); </span></p>

<p class=a6 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.5pt'><span
lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;while
(true)</span></p>

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

<p class=a6 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.5pt'><span
lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Socket socket = listener.Accept();</span></p>

<p class=a6 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.5pt'><span
lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
string message = GetRandomQuoteOfTheDay();</span></p>

<p class=a6 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.5pt'><span
lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
UnicodeEncoding encoder = new UnicodeEncoding();</span></p>

<p class=a6 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.5pt'><span
lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
byte[] buffer = encoder.GetBytes(message);</span></p>

<p class=a6 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.5pt'><span
lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
socket.Send(buffer, buffer.Length, 0); </span></p>

<p class=a6 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.5pt'><span
lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
socket.Close();</span></p>

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

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.0pt'><span
lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
performanceCounterRequestsTotal.Increment();</span></p>

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.0pt'><span
lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
performanceCounterBytesSentTotal.IncrementBy(buffer.Length);</span></p>

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

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

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.0pt'><span
lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
bytesPerSec += buffer.Length;</span></p>

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

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

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.0pt'><span
lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (Exception e)</span></p>

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

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.0pt'><span
lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
string message = &quot;Quote Server failed in Listener: &quot; </span></p>

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.0pt'><span
lang=EN-US>&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;
+ e.Message;</span></p>

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.0pt'><span
lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
eventLog.WriteEntry(message, EventLogEntryType.Error);</span></p>

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

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

<p class=MsoNormal style='line-height:15.0pt'><span style='font-family:宋体'>为了每秒显示一次已更新的值,可以添加一个</span><span
lang=EN-US>Timer</span><span style='font-family:宋体'>组件。把</span><span
lang=EN-US>OnTime()</span><span style='font-family:宋体'>方法设置为这个组件的</span><span
lang=EN-US>Elapsed</span><span style='font-family:宋体'>事件。如果</span><span
lang=EN-US>Interval</span><span style='font-family:宋体'>属性设置为</span><span
lang=EN-US>1000</span><span style='font-family:宋体'>,</span><span lang=EN-US>OnTime()</span><span
style='font-family:宋体'>方法就每秒调用一次,它使用</span><span lang=EN-US>PerformanceCounter</span><span
style='font-family:宋体'>类的</span><span lang=EN-US>RawValue</span><span
style='font-family:宋体'>属性设置性能计数:</span></p>

<p class=2 style='margin-top:8.15pt;margin-right:0cm;FTEL:0cm;
margin-left:21.45pt;FTEL:.0001pt;FTEL:18.45pt'><span
lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected void OnTimer (object
sender, System.Timers. ElapsedEventArgs e)</span></p>

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

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.0pt'><span
lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
performanceCounterBytesSentPerSec.RawValue = bytesPerSec;</span></p>

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.0pt'><span
lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
performanceCounterRequestsPerSec.RawValue = requestsPerSec;</span></p>

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

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

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

<h4 style='FTEL:21.45pt'><span lang=EN-US>6. perfmon.exe</span></h4>

<p class=MsoNormal><span style='font-family:宋体'>现在,就可以监视服务了。执行</span><span
lang=EN-US>Administrative Tools | Performance</span><span style='font-family:
宋体'>命令可以启用</span><span lang=EN-US>Performance</span><span style='font-family:
宋体'>工具。按下工具栏中的“+”按钮,可以添加性能计数。图</span><span lang=EN-US>32-26</span><span
style='font-family:宋体'>中显示出的性能对象是</span><span lang=EN-US>Quote Service</span><span
style='font-family:宋体'>,配置的所有记数器都显示在记数器列表中。</span></p>

<p align=center><span lang=EN-US><img width=266 height=264
src="32/image027.jpg"></span></p>

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

<p class=MsoBlockText style='margin-left:0cm;FTEL:22.25pt'><span
style='font-size:10.5pt;font-family:宋体;color:black;font-style:normal'>在添加记数器之后,可以看到服务的计数。使用这个性能工具,也可以创建日志文件,以便将来分析性能,如图</span><span
lang=EN-GB style='font-size:10.5pt;color:black;font-style:normal'>32-</span><span
lang=EN-US style='font-size:10.5pt;color:black;font-style:normal'>27</span><span
style='font-size:10.5pt;font-family:宋体;color:black;font-style:normal'>所示。</span></p>

<p align=center><span lang=EN-US><img width=442 height=311
src="32/image028.jpg"></span></p>

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

</div>
                <!-- page -->
                <div class="page" style="text-align: center">
                    <a href="100165812.htm">上一页</a>&nbsp;&nbsp;&nbsp;<a href="index.html">首页</a>&nbsp;&nbsp;&nbsp;<a href="100165814.htm">下一页</a>
                </div>
                <div style="margin: 0px auto; width: 700px; border: solid 1px #0b5f98;">
                    <div style="float: left; width: 16px; background-color: #0b5f98; color: White; padding: 1px;">
                        图书导读
                    </div>
                    <div style="float: right; width: 670px; text-align: left; line-height: 16pt; padding-left: 2px">
                        <!--导读-->
                        <h1 id="divCurrentNode2" style="color: #b83507; width: 100%; text-align: left; font-size: 12px; padding-left: 2px">当前章节:<a href='100165813.htm'><font color='red'>32.6.3  性能监视</font></a></h1>
                        <div id="divRealteNod2" style="padding-left: 2px">
                        <div style='float:left;width:49%'>·<a href='100165810.htm'>32.6  故障排除</a></div><div style='float:right;width:49%'>·<a href='100165811.htm'>32.6.1  交互式服务</a></div><div style='float:left;width:49%'>·<a href='100165812.htm'>32.6.2  事件日志</a></div><div style='float:right;width:49%'>·<a href='100165814.htm'>32.7  电源事件</a></div><div style='float:left;width:49%'>·<a href='100165815.htm'>32.8  小结</a></div><div style='float:right;width:49%'>·<a href='100165816.htm'>4.1 继承的类型</a></div></div>
                    </div>
                </div>
                </div>
        </div>
</body>
</html>

⌨️ 快捷键说明

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