SWT 中在界面实现时间实时刷新,我是在一个界面想完成,然后就写了个线程内部类,掉了界面的一个label然后这个线程死循环去刷新时间也就这个label,但是尝试了很多次都是界面死掉了。而且发现只要一有其他线程访问了界面的内容,界面就会死。而且asyncExec这个方法也不管用啊,照样死。
swt ,界面,?假死,多线程?
这样肯定会卡UI线程啊,
class TimeChange extends Thread
{
public void run()
{
for(;;)
{
try{
sleep(1000);
}catch{}
shell.getDisplay().asyncExec(new Runnable(){
public void run() {
label.setText();
}
});
}
}
}
new TimeChange().start();
shell.getDisplay().asyncExec本身的意思并非起一个线程,UI线程只有一个,这个调用的代码意思是把参数里的那个那些代码放到UI线程中执行,你却在这里面去sleep,当然会卡死..
要注意,runnable本身只是一个非常普通的接口,不是线程;