【问题标题】:how to detect if the UI Thread has finished working in WPF如何检测 UI 线程是否已在 WPF 中完成工作
【发布时间】:2012-04-12 12:51:02
【问题描述】:

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

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

【问题讨论】:

    标签: c# wpf multithreading performance-testing


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多