HI,
У нас есть устройство, которое отправляет TCP-пакеты на наш сервер один раз в день.У меня есть служба Windows, которая постоянно прослушивает эти пакеты.Код в службе в значительной степени является точной копией из примера MSDN ( Пример асинхронного сокета сервера ) - единственное отличие состоит в том, что наша реализация ничего не отправляет обратно.Он просто получает, обрабатывает данные и закрывает сокет.Служба только запускает поток, который немедленно обращается к указанному выше коду.
Проблема в том, что когда я захожу в диспетчер задач сервера, на котором он работает, служба, похоже, использует весь процессор (это говорит 99) все время.Об этом меня уведомили.Но я не понимаю, для чего используются эти циклы ЦП, поток просто блокируется на allDone.WaitOne () не так ли?
Я также создал консольное приложение с тем же кодом, и это прекрасно работает, то есть использует ЦП только во время обработки данных.Задача в каждом случае успешно завершается каждый раз, но реализация сервиса, на первый взгляд, кажется очень неэффективной.Что я могу здесь делать не так?
Спасибо.