Application.Idle вызывает высокую загрузку процессора - PullRequest
1 голос
/ 12 июня 2010

Я использую событие Application.Idle для обработки состояния панели инструментов (включение / отключение) и т. Д. Довольно широко. Во время бета-тестирования Norton AntiVirus 2011 мое внимание привлекло то, что мое приложение, которое я разрабатываю, вызвало предупреждение о высокой загрузке ЦП хотя бы на одном ЦП. Конечно же, я открыл диспетчер задач и наблюдал, как один из четырех процессоров (четырехъядерная система) приближается к 100%.

Я думал, что Application.Idle - это способ справиться с ситуацией, когда приложение не выполняет задачи процессора. Почему Application.Idle запускает процессор?

Вот как я прикрепляюсь к событию:

Приложение AddHandler.Idle, AddressOf OnAppIdle

Давно пользуюсь Application.Idle, никогда не знал, что у него возникнет эта проблема.

Использование VS 2010 .NET 4

Спасибо.

1 Ответ

1 голос
/ 12 июня 2010

Поскольку вы говорите, что используете Application.Idle для обработки состояния панели инструментов, я бы пришел к выводу, что код, который вы запускаете в обработчике события Idle, вероятно, генерирует сообщения Windows. Который будет обработан, и когда обработка будет завершена, снова будет вызван Application.Idle и т. Д. ...

Вы можете попытаться уменьшить количество сообщений, которые вы генерируете в своем обработчике бездействия - возможно, только изменяя статус панели инструментов, или что вы делаете, если это действительно необходимо.

Если вы отправите код из обработчика событий ожидания, вы можете получить дополнительную помощь.

...