2016-09-30 63 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)] } 

感謝