Приложение WPF полностью зависает на 1 минуту - PullRequest
5 голосов
/ 16 сентября 2011

У меня следующая, очень странная проблема с моим приложением WPF в рабочей среде:

  • Клиент сообщает, что программа работает очень медленно. Иногда весь интерфейс зависает примерно на одну минуту
  • Во время этого «замораживания» отсутствует загрузка процессора. Другие программы по-прежнему работают нормально
  • Проблема всегда возникает, когда пользователь физически находится за ПК. То есть при входе в систему с использованием RDP или TeamViewer проблему очень трудно воспроизвести, хотя я видел, что это происходит
  • Чтобы сделать это еще более странным: у этой компании около 40 компьютеров с идентичным оборудованием. Только в 5 из них эта проблема возникает (ПК: HP Compaq 6000 Pro, малый форм-фактор)

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

Стоит отметить: эта программа работает примерно в 1000 компаниях без проблем, что заставляет меня думать, что есть проблема с оборудованием.

Как бы вы диагностировали такую ​​проблему? Какие инструменты? Любые советы или указатели?

Ответы [ 3 ]

1 голос
/ 21 сентября 2011

Спасибо всем за предложения.Я пробовал разные из них.В этом случае комментарий от Рэя был самым полезным, он сказал:

«Интересно, делаю ли что-то подобное этому: blogs.technet.com/b/markrussinovich/archive/2010/12/07/… И это: blogs.technet.com/b/markrussinovich/archive/2010/01/13/… поможет диагностировать проблему. - Луч 16 сентября в 9:32 "

ПроцессМонитор указал тогда, когда приложение бездействовало, были различные чтения из реестра, связанные с Direct3D.Это сделало драйвер видеокарты подозрительным.Я удалил драйвер и установил более новую версию (мы пробовали это раньше, но теперь было еще более новое обновление).Это обновление исправило проблему.

1 голос
/ 16 сентября 2011

Я заметил подобное поведение в нашей лаборатории. Приложение часто зависает, но нет ни процессора, ни сетевой активности. Одинаковое поведение на многих ПК, как на старых, так и на новых машинах.

Наконец-то я понял. Поскольку приложение использует веб-службы и, по умолчанию, прокси-сервер «автоматически» обнаруживает, обнаружение останавливает все на несколько секунд.

Если для прокси установить значение NULL, все будет в порядке.

http://msdn.microsoft.com/en-us/library/fze2ytx2.aspx

0 голосов
/ 16 сентября 2011

Если проблема связана с WPF, вам следует проверить наличие узких мест производительности, таких как дорогостоящие привязки данных или события пользовательского интерфейса, которые часто происходят и требуют интенсивной обработки в вашем приложении. Профилировщик - неоценимый инструмент в этой ситуации, некоторые хорошие - это профилировщик Red Gate Performance и AQTime от SmartBear Software. Еще одним приятным инструментом является Snoop, утилита WPF Spy, которая позволяет анализировать дерево объектов пользовательского интерфейса. Если в этом дереве есть ненужные объекты, подумайте об обрезке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...