Заморозка рендеринга WPF

Я столкнулся с проблемой зависания графического интерфейса пользователя, связанной с аппаратным и программным рендерингом пользовательского интерфейса.

Контекст: 2 приложения WPF (.NET 3.5 SP1), запущенные на двойном дисплее XP Встроенная машина (DirectX 9.0c).

В какой-то момент одно из этих приложений зависает. Заморозка может длиться секунды или вечно. Второе приложение продолжает нормально работать. Ошибка возникает только в конфигурации с двумя дисплеями, второе приложение является своего рода катализатором (больше памяти и использование ЦП ...)

Используя Perforator, я вижу, что использование видеопамяти постоянно увеличивается и уменьшается с пиками ( cf: скриншот ). В течение этого времени один собственный поток использует 100% ЦП (трассировка стека включает WPFgfx, DirectX, GDI и видеодрайвер)

Обычно, когда приложение размораживается, оно отображается полностью программно (фиолетовый оттенок с помощью Perforator). . Кроме того, деактивация аппаратного рендеринга приводит к размораживанию приложения.

На данный момент я пришел к выводу, что у меня не хватает видеопамяти (как описано в пункте № 14 в этом сообщении ) с попытка вернуться к программному рендерингу, но где-то есть петля, пытающаяся снова в аппаратном режиме.

Я прав? Будет ли это проблема с WPF или с видеодрайвером? или даже DirectX? Есть ли какие-то параметры, которые я могу настроить вокруг этого?

9
задан mathieu 31 March 2011 в 15:28
поделиться