【问题标题】:How to cancel progress monitor eclipse4.4eclipse4.4如何取消进度监控
【发布时间】:2016-09-30 13:32:32
【问题描述】:

我有以下用 xtend 编写的代码:

void doMyMethod(IProgressMonitor monitor, Collection myCollection) {

    val subMonitor = SubMonitor.convert(monitor, myCollection.size());
    subMonitor.setTaskName("My Task Name...");
    myCollection.forEach [ element |

    if(subMonitor.canceled || monitor.canceled)
    {
        throw new OperationCanceledException
    }

    subMonitor.worked(1)]
 }

意味着当用户从 UI 取消进度监视器时停止进度监视器。但不工作。我正在关注Using prograess monitor,它说不能在 Eclipse 4.6 中使用 monitor.split。 奇怪的是,如果我放置一个调试点@subMonitor.worked(1) 并在调试模式下运行 Eclipse,它会按预期工作,如果从 UI 取消,则取消监视器,但如果删除调试点则不工作。任何想法都会很有帮助,因为如果调试模式有效,我的想法就会不足,没有它也应该可以工作!

【问题讨论】:

  • 好吧,这应该无法在 Eclipse Mars 中完全运行,因为该版本中不存在 SubMonitor 类。一直发现进度监视器取消操作很慢。
  • 抱歉,我的目标是 Luna。所以 SubMonitor 必须仅来自 Luna。让我编辑我的问题...感谢您的输入,greg-449

标签: eclipse eclipse-plugin eclipse-rcp eclipse-mars xtend


【解决方案1】:

我可以通过更改为来取消进度监视器:

void doMyMethod(IProgressMonitor monitor, Collection myCollection) {

monitor.beginTask(("My Task Name...", myCollection.size());

myCollection.forEach [ element |

if(subMonitor.canceled || monitor.canceled)
{
    throw new OperationCanceledException
}
subMonitor.worked(1)] }

谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-02
    • 2011-11-01
    • 1970-01-01
    • 2014-06-11
    • 1970-01-01
    • 2021-06-23
    • 2011-09-11
    • 2011-08-20
    相关资源
    最近更新 更多