2011-12-17 43 views
2

我想检测主线程中的某些时间消耗操作导致GUI冻结。 我的目标是自动设置和取消等待光标。如何检测主线程在GUI中冻结GUI?

感谢

+5

这没有多大意义。如果gui被冻结,您将无法设置等待光标:GUI被冻结。 – 2011-12-17 13:24:36

+1

@blow可以提取所有Event Event Dispash Thread中的事件,检查Reapaint Manager中的违规行为,但是为什么???必须计算(如果我们谈论AWT,Swing及其衍生产品) EDT会在一瞬间完成(输出到屏幕), – mKorbel 2011-12-17 13:29:34

+0

@blow:添加'swing'标签。请纠正,如果我错了 – home 2011-12-17 13:36:16

回答

5

我想你把本末倒置:你的主线程不应该做摆在首位任何耗时的操作 - 它们应始终在单独的线程外部化,让您的GUI可以保持响应(例如在操作上显示状态,或者提供放弃它们的可能性)。

2

您可以有一个线程轮询GUI线程的堆栈跟踪以确定它是空闲还是忙碌。如果太频繁,您可以将它正在做的事情(堆栈跟踪)记录到日志中。最初,记录每个非空闲堆栈跟踪并确定哪些值不值得记录可能很有趣。