2016-09-30 4 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, в котором говорится, что использовать monitor.split в eclipse 4.6 невозможно. Странно, хотя, если я поставил точку отладки @ subMonitor.worked (1) и запустил eclipse в режиме отладки, он работает как ожидалось и отменяет монитор, если отменяет пользовательский интерфейс, но не работает, если удалена точка отладки. Любая идея была бы очень полезной, потому что у меня не хватает идей, если режим отладки работает, он также должен работать без него!

+0

Ну это должно не полностью работать в Eclipse, Марс, потому что класс SubMonitor не существует в этой версии. Я всегда обнаружил, что отключение монитора прогресса работает очень медленно. –

+0

Извините, у меня есть Луна в цель. Так что SubMonitor должен исходить только от Луны. Позвольте мне изменить свой вопрос, чем .. Спасибо за ввод, 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)] } 

благодаря