Как измерить время рендеринга экрана в WPF - PullRequest
14 голосов
/ 31 марта 2011

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

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

[обновление]

Спасибо за предложения.

У меня естьпопытался дождаться событий Loaded и ContentRendered, но оба они срабатывают до того, как контент попадет на экран.

Похоже, что у других возникает эта проблема.Я попытался выполнить шаги, предложенные в http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/693fbedb-efa6-413e-ab66-530c6961d3fb/, но все еще не смог заставить мой код ждать завершения рендеринга.

Ответы [ 4 ]

11 голосов
/ 27 мая 2011

Вы можете использовать это решение: http://www.japf.fr/2009/10/measure-rendering-time-in-a-wpf-application/

4 голосов
/ 31 марта 2011

Вы смотрели на WPF Performance Suite ? Вы можете увидеть производительность и точно определить проблемный код.

1 голос
/ 31 марта 2011

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

1 голос
/ 31 марта 2011

Вы должны использовать событие ContentRendered of Window.

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

...