1

我需要测量 WPF 多线程应用程序的性能,会发生以下情况:
1. 在 UI 中触发 buttonClick -> UI 线程开始处理它
2. UI 线程在后台启动另一个线程,它在后台异步执行某些操作并且, 准备好后,将结果传回 ui 线程
3. 数据绑定发生
4. 渲染发生

我知道线程的数量,但不知道顺序。如何测量 buttonClick 和渲染结束之间的时间?UI 线程完成后是触发事件还是引发属性?或者如果没有,我能做到吗?
任何帮助将不胜感激。

4

2 回答 2

1

我在http://www.kynosarges.de/WpfPerformance.html发现了一些可能有用的东西:

我们无法直接访问渲染线程,但 WPF 确实提供了一种间接访问点,即通过 CompositionTarget.Rendering 事件。此事件通常以监视器刷新率(通常为每秒 60 次)触发,无论是否有任何新内容要呈现。它主要用于需要在监视器显示它们时尽快生成显示更新的自定义动画。

于 2012-04-12T13:05:12.590 回答
0

您必须查看WPF Performance Suite,尤其是 Perforator 和 Visual Profiler。在 VisualProfiler 上,您可以拥有“应用程序 CPU 使用详情”部分,其中之一是:

渲染 (MediaContext) 在渲染过程中发生。该方法最终调用每个元素的 OnRender 方法,有助于了解所有元素的 OnRender 总成本......

或者

渲染线程在渲染线程上执行渲染指令时发生。这对于检测渲染绑定的应用程序很有用。

希望这可以帮助。

于 2012-04-12T13:01:36.557 回答