【发布时间】:2015-10-23 02:53:03
【问题描述】:
我遇到了长时间运行的任务的问题。
显示我的对话框后,我想扫描一个 ftp 目录。这个任务需要一些时间,所以我需要在 UI 线程中运行这个任务。
我的想法是
@Override
protected void postDialogOpen() {
// if invoked via menu button
if (!scanFtp) {
final Display display = Display.getDefault();
new Thread(new Runnable() {
@Override
public void run() {
//initProgressWaitViewer();
scanFtpServer();
//closeProgressWaitViewer();
display.syncExec(new Runnable() {
@Override
public void run() {
updateTree();
}
});
}
}).run();
}
}
但是在执行 scanFtpServer() 期间,我的对话框是不可移动的,如果我点击它,它就会变成“不负责任的”。
是不是我做错了什么?
【问题讨论】:
-
使用
start()执行线程。如果这不能解决所有问题..可能需要更多代码..
标签: java multithreading user-interface swt