2016-09-30 35 views
0

我下面写的代码XTEND:如何取消进度监视器eclipse4.4

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中取消,但如果删除调试点则不工作。任何想法都会非常有帮助,因为如果调试模式起作用,我的想法仍然不足,它也应该没有它!

+0

嗯,这应该无法在Eclipse火星完全运行,因为副监视器类没有在该版本中存在。我一直发现进度监视器取消操作非常缓慢。 –

+0

对不起,我有Luna的目标。所以SubMonitor只能来自Luna。让我编辑我的问题比..感谢输入,greg-449 – lifeline2

回答

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)] } 

感谢