Java InvokeAndBlock导致EDT冲突,每次我在showModeless对话框之后使用
每当执行任何基于进程的函数时,我都使用InvokeAndBlock。比如说 如果我想保存一些东西,并且需要一些时间来保存数据,那么我使用下面的代码 首先显示进程对话框Java InvokeAndBlock导致EDT冲突,每次我在showModeless对话框之后使用,java,codenameone,Java,Codenameone,每当执行任何基于进程的函数时,我都使用InvokeAndBlock。比如说 如果我想保存一些东西,并且需要一些时间来保存数据,那么我使用下面的代码 首先显示进程对话框 initProcessDialog(); progressDialog.showModeless(); // show process dialog //Actual process Display.getInstance().invokeAndBlock(new Runnable() { public void
initProcessDialog();
progressDialog.showModeless(); // show process dialog
//Actual process
Display.getInstance().invokeAndBlock(new Runnable() {
public void run() {
saveAll("SAVE_ALL",jobData);
FileUtil.removeBackupFile(jobDataDetail.getJobTemplateFileName());
progressDialog.dispose();
}
});
在执行任何耗时的操作时,还添加了InvokeAndBlock
backButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
initLoadingDialog();
loadingDialog.showModeless();
Display.getInstance().invokeAndBlock(new Runnable() {
public void run() {
}
});
}
});
过程中需要进行任何更正吗?因为您对的调用主要与您自己的代码相关,所以很难说您到底在做什么
调用invokeAndBlock
中的dialog.dispose()
是错误的。您需要在invokeAndBlock
之后调用它,它将在没有EDT冲突的情况下完全相同地工作
代码名1有一个UI线程:
invokeAndBlock
打开一个单独的线程,不允许您访问任何与UI相关的API