解决swt进度条假死

ProgressMonitorDialog progressMonitorDialog = new ProgressMonitorDialog(null);
        progressMonitorDialog.setCancelable(true);               
        try {
            progressMonitorDialog.run(true,true,new IRunnableWithProgress(){//第一个参数true时
                public void run(IProgressMonitor monitor)throws InvocationTargetException, InterruptedException {
                    monitor.beginTask(ResViewConstant.beginning+"...", IProgressMonitor.UNKNOWN);
                    final SchemaCheckModels schemaCheckModels=SchemaCheckCalculation.loadSchemaChecks(nodeModel,monitor);   
                    monitor.done();   
                    Display.getDefault().syncExec(new Runnable(){//使用此方法Display.getDefault().syncExec
                        public void run() {
                            ResRefreshReportDialog resRefreshReportDialog=new ResRefreshReportDialog(null);
                            resRefreshReportDialog.setSchemaCheckModels(schemaCheckModels);
                            resRefreshReportDialog.setNodeModel(nodeModel);
                            resRefreshReportDialog.open();
                        }
                    });
                   
                }
            });
        }catch (Exception e) {
            UIHelper.handleException(e);
        }

猜你喜欢

转载自qun715715.iteye.com/blog/2186922