如何在WPF中测量屏幕渲染时间

Bri*_*son 15 testing wpf performance automated-tests measurement

我试图测量基于WPF的应用程序的性能.目前,我们的代码可以计算将内容添加到WPF渲染树所需的时间.此时,控制权返回给我们的程序.问题是WPF在屏幕上显示内容之前仍然存在滞后.对于复杂的渲染树,这可能只需几秒钟.

你能推荐一种方法来确定WPF何时完成渲染到屏幕?我希望这些测试完全自动化,而不是依赖坐在秒表旁的人.

[更新]

感谢您的建议到目前为止.

我已经尝试等待Loaded和ContentRendered事件,但在内容进入屏幕之前都会触发.

看起来其他人有这个问题.我曾尝试在建议的步骤 http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/693fbedb-efa6-413e-ab66-530c6961d3fb/但仍然没有能够力我的代码等待渲染完成.

Jon*_*INE 12

您可以使用此解决方案:http://www.japf.fr/2009/10/measure-rendering-time-in-a-wpf-application/

  • 摘要:在“Children.Add”之后立即在调度程序中安排一个操作,优先级为“已加载”(低于渲染优先级): this.Dispatcher.BeginInvoke( DispatcherPriority.Loaded, new Action(() => { sw.Stop( ); Debug.WriteLine("渲染" + sw.ElapsedMilliseconds + "毫秒"); })); (2认同)

Ela*_*atz 1

您应该使用 Window 的 ContentRendered 事件。

每次出现完整的渲染序列时都会触发此事件,您可以对其进行计时。