如何检测 UI 线程是否已在 WPF 中完成工作

本文关键字:WPF 工作 是否 线程 何检测 检测 UI | 更新日期: 2023-09-27 18:31:05

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

线程的数量是我知道的,顺序不是。如何测量按钮单击和渲染结束之间的时间?UI 线程在完成后是触发事件还是引发属性?或者如果没有,我可以做到吗?
任何帮助都会被理解。

如何检测 UI 线程是否已在 WPF 中完成工作

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

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

您必须查看 WPF 性能套件,尤其是 Perforator 和 Visual Profiler。在VisualProfiler上,您可以有"应用程序CPU使用情况详细信息"部分,其中之一是:

渲染 (MediaContext) 在渲染通道期间发生。此方法 最终调用每个元素的 OnRender 方法,并且很有用 了解所有元素的OnRender总成本。

渲染线程 在 呈现线程。这对于检测渲染绑定很有用 应用。

希望这有帮助。