HI,Служба Windows с использованием большого количества CPU (VB.NET)
У нас есть устройство в поле, которое отправляет TCP-пакеты на наш сервер один раз в день. У меня есть служба Windows, которая постоянно прослушивает эти пакеты. Код в сервисе в значительной степени является копией из примера MSDN (Asynchronous Server Socket Example) - единственная разница в том, что наша реализация ничего не возвращает. Он просто получает, обрабатывает данные и закрывает сокет. Служба только начинает поток, который немедленно обращается к коду, указанному выше.
Проблема заключается в том, что когда я перешел на диспетчер задач сервера, на котором он запущен, служба, похоже, все время использует весь процессор (он говорит 99). Я был уведомлен об этом ИТ. Но я не понимаю, для чего используются эти циклы процессора, поток просто блокирует allDone.WaitOne(), не так ли?
Я также создал консольное приложение с тем же кодом, и это работает очень хорошо, т. Е. Используя CPU только при обработке данных. Задача в каждом случае успешно завершается каждый раз, но реализация сервиса, по внешнему виду, кажется очень неэффективной. Что я могу делать неправильно?
Спасибо.
Поскольку в этом образце нет ничего, что использовало бы CPU, вам придется опубликовать свой собственный код. Я также предлагаю вам подключиться к службе с помощью отладчика и нажать Ctrl + F5 - это нарушит выполнение, и вы сразу увидите, какой код выполняется. –