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

时间:2012-04-12 12:51:03

标签: c# wpf multithreading performance-testing

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

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

3 个答案:

答案 0 :(得分:1)

我在http://www.kynosarges.de/WpfPerformance.html找到了可能有用的内容:

  

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

答案 1 :(得分:0)

我希望这个链接可以帮到你 WPF Threads

答案 2 :(得分:0)

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

  

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

  

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

希望这有帮助。