我們有上發送TCP數據包到我們的服務器每天一次現場的設備。我有一個不斷監聽這些數據包的Windows服務。服務中的代碼幾乎是來自MSDN示例(Asynchronous Server Socket Example)的抄送副本 - 唯一的區別是我們的實現不會發回任何內容。它只接收,處理數據並關閉套接字。該服務只是啓動一個線程,立即解決上面鏈接的代碼。
問題是,當我得到它運行的服務器的任務管理器時,該服務似乎一直在使用所有的CPU(它表示99)。我被IT通知了這件事。但我不明白那些CPU週期正在使用什麼,線程只是在allDone.WaitOne()上阻塞了嗎?
我也用相同的代碼創建了一個控制檯應用程序,並且工作得很好,即僅在處理數據時使用CPU。每種情況下的任務都是每次都成功完成,但從外觀來看,服務實現效率非常低。我在這裏做錯了什麼?
謝謝。
由於該示例中沒有任何內容會使用CPU,因此您必須發佈自己的代碼。我還建議你用調試器附加到服務上,然後按下Ctrl + F5 - 這會中斷執行,你會立即看到正在執行的代碼。 – 2010-07-22 05:32:46