У меня есть 15 BackgroundWorer, которые работают все время, каждый из них работает примерно полсекунды (делает веб-запрос), и ни один из них никогда не останавливается.
Я заметил, что моя программазанимает около 80% процессорных ресурсов моего компьютера и около 15 МБ памяти (Core 2 Duo, 4 ГБ памяти DDR2).
Это нормально?веб-запросы не являются тяжелыми, они просто отправляют и ждут ответа сервера, и да, запуск 15 из них на самом деле не является производительным действием (необходима скорость), но я не думал, что это будет настолько интенсивно.
Я новичок в программировании, и вряд ли когда-либо (как и любой новый программист, я полагаю) беспокоюсь о производительности, но на этот раз это смешно, 80% использования ресурсов обработки для приложения Windows Forms с двумя списками ифоновые работники, делающие веб-запросы, не полностью соответствуют ожиданиям.
info:
- Я использую обработку исключений как часть своей рутины, которую я однажды прочитал, что это не очень хорошодля производительности
- У меня есть 15 фоновых рабочих
- Мой код уверяет, что ни один из них никогда не простаивает
- Элемент списка
- формы Windows, Visual Studio, c #.
------ [править - вопросы в ответах] ------
Что именно вы подразумеваете под "Мой код уверяет, что никто из них никогда не бездействует "?
ogram остается в ожидании
while (bgw1.IsBusy || gbw2.IsBusy ... ... ...) { Application.DoWork();}
, а затем, когда любой из них становится свободным, возвращается к работе.
Не могли бы вы дать более подробную информацию о рабочей нагрузке, на которую вы это ставите?
Я создаю объект веб-запроса HTTP, открываю его и жду запроса сервера.На самом деле он содержит всего пару строк и не требует интенсивной обработки, полсекунды приходится на ожидание сервера.
Каким образом и сколько исключений выдается? Когда страницане существует, есть system.WebException, когда он работает, он возвращает «ОК», и около 99% проверяемых мной страниц не существует, поэтому я бы сказал, что около 300 исключений в минуту (говоря такэто звучит жутко, я знаю, но это работает)
Если вы работаете в отладчике, то исключения намного дороже, чем они были бы, если бы не отладка Я неГоворя о запуске его в отладчике, я запускаю исполняемый файл, полученный в результате EXE.