首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每次工作()之后,在IProgressMonitor中更新IStatusLineManager中的

每次工作()之后,在IProgressMonitor中更新IStatusLineManager中的
EN

Stack Overflow用户
提问于 2016-05-13 15:38:06
回答 1查看 204关注 0票数 1

我试图使用IProgressMonitor,但是当我运行我的代码时,我没有看到任何事情发生。如果我删除了pm.done(),我可以看到进度监视器被填满,然后停留在那里。是否可以在每次pm.worked()调用之后刷新UI,即使我必须暂停当前线程。

代码语言:javascript
复制
public void someMethod(CutomerInfo cInfo) {

    IStatusLineManager lm = getViewSite().getActionBars().getStatusLineManager();
    IProgressMonitor pm = lm.getProgressMonitor();
    pm.beginTask("Doing some work",  100);

    populateCustomerInfo();
    pm.worked(25);

    someOtherFunction();
    pm.worked(25);

    morefunctions();
    pm.worked(25);

    this.someValue = someClass.yetAnotherFunction(this.cInfo, this);
    pm.worked(25);

    pm.done();
}

编辑1

我将作业添加到我的函数中,现在看起来像下面的代码。我知道作业正在运行,但我没有看到进度条。是否有办法通过我定义为pm的进度监视器?

代码语言:javascript
复制
public void someMethod(CutomerInfo cInfo) {

    Job job = new Job("Test Job") {

  IStatusLineManager lm = getViewSite().getActionBars().getStatusLineManager();
  IProgressMonitor pm = lm.getProgressMonitor();

  @Override
  protected IStatus run(IProgressMonitor monitor) {
            // Set total number of work units
            monitor.beginTask("start task", 100);

    try {
      System.out.println("\nHello World (from a background job)\n");

      monitor.subTask("doing a");
      populateCustomerInfo();
      monitor.worked(25);

      monitor.subTask("doing b");
      someOtherFunction();
      monitor.worked(25);

      monitor.subTask("doing c");
      morefunctions();
      monitor.worked(25);

      monitor.subTask("doing d");
      yetAnotherFunction();
      monitor.worked(25);

      monitor.done();
    }catch (InterruptedException e1) {
      e1.printStackTrace();
    }
            return Status.OK_STATUS;
        }
    };

    job.schedule();
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-13 17:55:35

长时间运行的任务必须在后台线程中运行。在UI线程中运行它们将阻止UI更新。

在这种情况下,您可能希望使用Eclipse Job。作业的主run方法被赋予一个进度监视器,它将显示在状态行中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37214106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档