Прежде всего, знаете ли вы, что Microsoft предоставляет бесплатный диагностический инструмент, который сообщит вам частоту кадров, с которой WPF обновляет экран? Я думаю, если вы не уверены, что получаете требуемую частоту кадров, возможно, вы не доверяете ей, но я считаю, что это надежный инструмент. Он называется Perforator и является частью WPF Performance Suite, который вы можете получить, выполнив следующие инструкции: http://msdn.microsoft.com/library/aa969767
Это, вероятно, проще, чем написать свой собственный.
Кроме того, как именно вы «запрашиваете» частоту кадров? Какой API вы используете? Используете ли вы свойство DesiredFrameRate на временной шкале? Если это так, это чаще используется для уменьшения частоты кадров, чем для ее увеличения. (В документах также говорится об увеличении частоты кадров, чтобы избежать разрыва, но это не имеет смысла - разрыв вызывается представлением кадров, не синхронизированных с монитором, и не является артефактом медленной частоты кадров. В любом случае в Vista или Windows 7 вы не будете разрываться с включенным DWM.) Это всего лишь подсказка, и WPF не обещает соответствовать рекомендуемой частоте кадров.
Что касается техники измерения, вы можете пойти несколькими путями. Если вы просто пытаетесь определить, соответствует ли частота кадров правильному значению, вы можете просто увеличить счетчик один раз на кадр (что вы обычно делаете в обработчике событий для CompositionTarget.Rendering
) и настроить DispatcherTimer. срабатывать один раз в секунду, чтобы оно показывало значение в пользовательском интерфейсе, а затем сбрасывало счетчик. Он будет несколько грубым и готовым, поскольку DispatcherTimer
не совсем точен, но он покажет вам, есть ли у вас 15 кадров в секунду, когда вы ожидали 30 кадров в секунду, например.
Если вы пытаетесь получить более точное представление (например, вы хотите попытаться выяснить, воспроизводятся ли кадры постоянно или если вы, кажется, время от времени теряете кадры), тогда это получает немного сложнее. Но я подожду, чтобы проверить, справится ли Perforator с вами, прежде чем делать дополнительные предложения.