【发布时间】:2014-10-03 07:16:04
【问题描述】:
我只需要为 SWT 线程测试编写测试代码,现在卡住了 Display.asyncExec() 奇怪的行为。
addShellListener(new ShellAdapter() {
@Override
public void shellActivated(ShellEvent e) {
Display.getDefault().asyncExec(new Runnable(){
@Override
public void run() {
for(int i=0;i<1000;i++)
{
getLabel().setText(i+"");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
});
}
});
我只是在 shell 启动时使用 asyncExec 运行循环的 Runnable,它每秒更新 shell 内的标签值,模拟计时器。一切都很好并且滴答作响,直到我尝试拖动窗口。窗口在拖动时冻结(包括“勾选”标签)并出现“程序没有响应”通知,只有通过 Java VM 进程终止才能退出。
【问题讨论】:
标签: java window swt drag freeze