Я работал над приложением и пытался выяснить, почему загрузка моего процессора достигла 80-100%.
Я сузил его до элементов управления TextBox на моей странице WPF. Оказывается, если бы я сфокусировался на них, он начал бы забивать процесс wmiprvse.exe. Это увеличило загрузку процессора до 100%.
Затем я создал тестовое приложение WPF, чтобы проверить, не является ли оно основным кодом или виновником является только TextBox. Оказывается, ЭТО!
Моя тестовая форма содержит только одно текстовое поле, но как только я сфокусируюсь на нем, чтобы начать редактирование некоторого текста, мой процессор взлетит до 100%.
Кто-нибудь еще сталкивался с этой проблемой, и знаете ли вы какой-нибудь обходной путь?
Обновление
Ну, я понял это.
В другом приложении я использовал ManagementEventWatcher
. Я делал запросы каждую секунду, так что, возможно, я как-то создавал отставание.
Вот небольшой пример того, что я удалил:
private ManagementEventWatcher processCreateWatcher = new ManagementEventWatcher();
processCreateWatcher.Query = new WqlEventQuery("__InstanceCreationEvent", interval, "TargetInstance isa \"Win32_Process\"");
processCreateWatcher.EventArrived += new EventArrivedEventHandler(processCreateWatcher_EventArrived);
processCreateWatcher.Start();
В следующий раз мне лучше быть осторожным при использовании класса Management!