【发布时间】:2010-07-22 13:14:42
【问题描述】:
嗨,
我们在现场有一个设备,它每天向我们的服务器发送一次 TCP 数据包。我有一个不断侦听这些数据包的 Windows 服务。服务中的代码几乎是 MSDN 示例 (Asynchronous Server Socket Example) 的抄本——唯一的区别是我们的实现不会发回任何内容。它只是接收、处理数据并关闭套接字。该服务只是启动一个线程,该线程立即处理上面链接的代码。
问题是,当我进入运行它的服务器的任务管理器时,该服务似乎一直在使用所有 CPU(它说 99)。 IT 部门通知了我。但我不明白这些 CPU 周期是用来做什么的,线程只是阻塞 allDone.WaitOne() 不是吗?
我还用相同的代码制作了一个控制台应用程序,它工作得很好,即仅在处理数据时使用 CPU。每种情况下的任务每次都成功完成,但是服务的实现,看起来效率很低。我在这里做错了什么?
谢谢。
【问题讨论】:
-
由于该示例中没有任何内容会使用 CPU,因此您必须发布自己的代码。我还建议您使用调试器附加到服务并按 Ctrl+F5 - 这会中断执行,您会立即看到正在执行的代码。
标签: windows-services