У меня проблема с зависанием графического интерфейса пользователя, связанная с рендерингом аппаратного или программного интерфейса.
Контекст: 2 приложения WPF (.NET 3.5 с пакетом обновления 1), работающие на машине со встроенным XP-дисплеем с двумя дисплеями (DirectX 9.0c).
В какой-то момент одно из этих приложений зависает. Но только рендеринг: графический интерфейс остается активным (насос сообщений активен, приложение отзывчиво), но рендеринг не выполняется.
Замораживание может длиться секунды или навсегда.
Второе приложение продолжает работать нормально. Ошибка возникает только в конфигурации с двумя дисплеями, второе приложение является своего рода катализатором (больше памяти и загрузка процессора ...)
Используя Perforator, я вижу, что использование видеопамяти постоянно увеличивается и уменьшается (см. снимок экрана ).
В течение этого времени один собственный поток потребляет 100% ЦП (трассировка стека включает WPFgfx, DirectX, GDI и видеодрайвер)
Обычно, когда приложение размораживается, оно полностью отображается программно (фиолетовый оттенок с помощью Perforator).
Кроме того, деактивация аппаратного рендеринга размораживает приложение.
На данный момент я пришел к выводу, что у меня нехватка видеопамяти (как описано в пункте №14 в этом посте ), с попыткой откатиться до программного рендеринга, но цикл где-то пытается снова в аппаратном режиме.
Я прав?
Будет ли это скорее проблема WPF или проблема с драйвером видео? или даже DirectX?
Есть ли какие-то параметры, которые я могу настроить вокруг этого?