Хорошо, я нашел решение.Идея состоит в том, чтобы установить прослушиватель «verify», который вызывается всякий раз, когда текст собирается добавить в StyledText
.Поэтому, когда текст будет добавлен (из резервной очереди отправки), код ищет установленный флаг, указывающий, были ли завершены потоки.Если потоки были прерваны, игнорируйте обновление текста.Это позволяет элементу управления перестать обновляться, одновременно позволяя опустошить очередь событий.Следующий фрагмент кода решает проблему.
txtOutput
- это элемент управления StyledText
.
endingThreads
- это boolean
, установленный в true
после завершения потоков.
Похоже, это самый простой способ решить проблему в приложении SWT.
txtOutput.addVerifyListener(new VerifyListener() {
public void verifyText(VerifyEvent e)
{
if( !endingThreads )
{
e.doit = true;
}
else
{
e.doit = false;
}
}
});