仅当未附加性能分析器时 UI 线程锁定
Posted
技术标签:
【中文标题】仅当未附加性能分析器时 UI 线程锁定【英文标题】:UI thread locks only when performance profiler is not attached 【发布时间】:2016-08-28 17:36:16 【问题描述】:我的 IU 线程在我开始某项任务时锁定,并且每秒更新一次。但是当我连接性能分析器来研究发生了什么事情时,一切都很顺利,并且 UI 线程在 98% 的时间都处于空闲状态。我已经尝试过 Visual Studio 集成分析器和 dotTrace 并且都产生了相同的结果。如何在没有分析器的情况下分析 UI 锁?
我讨厌海森虫
【问题讨论】:
我将代码切成两半,二进制搜索是罪魁祸首。在主窗体中添加一个 10 毫秒间隔的计时器并让它更新标签。慢慢剪掉所有东西,看看什么时候有变化。 您在 Visual Studio 下运行,对吧?只需单击pause button 并查看它在做什么。就这么简单。 但话说回来,他们为某些目的制造工具,不是吗? :) 经过一些实验我发现高cpu使用率是由VS调试器引起的。如果我在 VS 之外运行应用程序,它运行顺利。创建了一个后续问题***.com/questions/39304865/… 【参考方案1】:使用 Visual Studio;调试-Windows-线程。点击暂停。这将向您显示所有活动线程。 Parallel Stacks 将向您显示所有当前的 Stack Traces(在一个时髦的图表中),显示哪个产生了哪个。
使用它,您将找到每个线程/堆栈的最后一次调用,并能够查看导致冻结的最后一次调用。
【讨论】:
以上是关于仅当未附加性能分析器时 UI 线程锁定的主要内容,如果未能解决你的问题,请参考以下文章