Java InvokeAndBlock导致EDT冲突,每次我在showModeless对话框之后使用

Java InvokeAndBlock导致EDT冲突,每次我在showModeless对话框之后使用,java,codenameone,Java,Codenameone,每当执行任何基于进程的函数时,我都使用InvokeAndBlock。比如说 如果我想保存一些东西,并且需要一些时间来保存数据,那么我使用下面的代码 首先显示进程对话框 initProcessDialog(); progressDialog.showModeless(); // show process dialog //Actual process Display.getInstance().invokeAndBlock(new Runnable() { public void

每当执行任何基于进程的函数时,我都使用InvokeAndBlock。比如说

如果我想保存一些东西,并且需要一些时间来保存数据,那么我使用下面的代码

首先显示进程对话框

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