У меня есть приложение с потоком GUI и потоком SQL. В графическом интерфейсе отображается дерево, и нажатие на элемент в дереве запускает отдельный поток, который запустит SQL-запрос. По завершении запроса дерево обновляется.Как отключить SWT selectionListener до тех пор, пока не будет выполнен отдельный поток
Проблема заключается в том, что если пользователь снова нажимает на дерево до того, как поток выборки будет завершен, дерево будет обновляться, прежде чем у него будет возможность завершить выборку данных, и дерево будет обновлено некорректно. Есть ли способ отключить прослушиватель непосредственно перед запуском другого потока, а затем снова включить его после завершения потока для предотвращения ложных запросов?
private SelectionListener getTreeListener()
{
//main tree listener that populates folder and report objects on the left side of the SashForm
SelectionListener l = new SelectionAdapter()
{
@Override
public void widgetSelected(SelectionEvent arg0)
{
Thread runThread = new FetchTreeChildrenThread(_es,_mgr,_PAI,_PE,_SelectedPub,Selected_Tree_Item);
runThread.start();
}
}
}
Если вы чувствуете, что ответ решил проблему, отметьте ее как «принятую», нажав зеленую галочку. Это помогает сосредоточиться на старых постах, у которых до сих пор нет ответов. –