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> protected void Listener()</span></p>
<p class=a6 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.5pt'><span
lang=EN-US> {</span></p>
<p class=a6 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.5pt'><span
lang=EN-US> try</span></p>
<p class=a6 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.5pt'><span
lang=EN-US> {</span></p>
<p class=a6 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.5pt'><span
lang=EN-US>
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>
listener.Start(); </span></p>
<p class=a6 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.5pt'><span
lang=EN-US> while
(true)</span></p>
<p class=a6 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.5pt'><span
lang=EN-US> {</span></p>
<p class=a6 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.5pt'><span
lang=EN-US>
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>
string message = GetRandomQuoteOfTheDay();</span></p>
<p class=a6 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.5pt'><span
lang=EN-US>
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>
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>
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>
socket.Close();</span></p>
<p class=a6 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.5pt'><span
lang=EN-US> </span></p>
<p class=2 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.0pt'><span
lang=EN-US>
performanceCounterRequestsTotal.Increment();</span></p>
<p class=2 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.0pt'><span
lang=EN-US>
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> </span></p>
<p class=2 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.0pt'><span
lang=EN-US>
requestsPerSec++;</span></p>
<p class=2 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.0pt'><span
lang=EN-US>
bytesPerSec += buffer.Length;</span></p>
<p class=2 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.0pt'><span
lang=EN-US> }</span></p>
<p class=2 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.0pt'><span
lang=EN-US> }</span></p>
<p class=2 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.0pt'><span
lang=EN-US> catch (Exception e)</span></p>
<p class=2 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.0pt'><span
lang=EN-US> {</span></p>
<p class=2 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.0pt'><span
lang=EN-US>
string message = "Quote Server failed in Listener: " </span></p>
<p class=2 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.0pt'><span
lang=EN-US>
+ e.Message;</span></p>
<p class=2 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.0pt'><span
lang=EN-US>
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> }</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>
}</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> 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> {</span></p>
<p class=2 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.0pt'><span
lang=EN-US>
performanceCounterBytesSentPerSec.RawValue = bytesPerSec;</span></p>
<p class=2 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.0pt'><span
lang=EN-US>
performanceCounterRequestsPerSec.RawValue = requestsPerSec;</span></p>
<p class=2 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.0pt'><span
lang=EN-US> bytesPerSec = 0;</span></p>
<p class=2 style='margin-left:21.45pt;FTEL:18.45pt;line-height:13.0pt'><span
lang=EN-US> 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>
}</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'> 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'> 32-27</span></p>
</div>
<!-- page -->
<div class="page" style="text-align: center">
<a href="100165812.htm">上一页</a> <a href="index.html">首页</a> <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 + -
显示快捷键?