IProgressMonitor示例需要不确定的长流程数据库事务

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IProgressMonitor示例需要不确定的长流程数据库事务相关的知识,希望对你有一定的参考价值。

我是RCP的新手,我正在构建一个产品,我有“导入”功能,从excel导入大约50000个数据。我想展示进度中的进展吧。我尝试了很多例子,但无法提取所需的代码可能是我不知道如何写出正确的方法。请给我举几个步骤,以帮助理解流程。如果步骤说明在哪里编写IProgressMonitor和数据库连接代码将会很好,这将从excel导入数据并插入到数据库中。

我还需要一些更多的东西,比如调用每个方法字符串应该改为不同的字符串,就像我在Image中提到的那样。通过这样做,用户可以意识到幕后发生的事情。

下面是我尝试过的示例代码

new ProgressMonitorDialog(shell).run(true,true,new IRunnableWithProgress(){@Override public void run(IProgressMonitor monitor)抛出InvocationTargetException,InterruptedException {try {monitor.beginTask(“Importing Data ...”,IProgressMonitor.UNKNOWN);

                    if (monitor.isCanceled())
                        return;
                    try {
                        Display.getDefault().asyncExec(new Runnable() {@
                            Override
                            public void run() {
                                Snippet s = new Snippet();
                                // What should i write here ?
                            }
                        });
                        monitor.subTask(String.valueOf(i)); // How to show elapse time ?
                        Thread.sleep(100); // When to sleep thread without knowing how much time it will take ? 
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                } finally {
                    monitor.done();
                }
            });

预先感谢。

答案

这是一个基本的Job,它使用具有未知总工作量的进度监视器,并通知有关即将执行的子任务

Job job = new Job( "Import Data" ) {
  @Override
  protected IStatus run( IProgressMonitor monitor ) {
    monitor.beginTask( "Importing Data...", IProgressMonitor.UNKNOWN );
    try {
      monitor.subTask( "Opening Database..." );
      // connect to db
      monitor.subTask( "Reading Elements..." );
      // read elements
      ...
    } finally {
      monitor.done();
    }
    return Status.OK_STATUS;
  }
};
job.schedule();

有关改进和更多细节,您应该阅读相应的文章和文档。

以上是关于IProgressMonitor示例需要不确定的长流程数据库事务的主要内容,如果未能解决你的问题,请参考以下文章

我正在查询一个表,但我需要不同列中的输出

使用需要不记名令牌的 API 在 Python 中进行 API 调用

Vue webpack动态导入需要不起作用

为啥在php中使用cropper js上传图像时需要不工作

UITableviewCell 中的 UIStackview 按比例填充需要不正确的帧

angularjs选择需要不工作的ng-options