如何取消进度监视器eclipse4.4

时间:2016-09-30 13:32:33

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

我在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取消但在调试点被删除时不起作用。任何想法都会有所帮助,因为如果调试模式有效,我的想法不足,它也可以在没有它的情况下工作!

1 个答案:

答案 0 :(得分:0)

我可以通过更改为:

来取消进度监视器
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)] }

感谢