Ich kann meine Benutzeroberfläche auch nicht aktualisieren, nachdem alle SWT-Code in "Display.getDefault().asyncExec
" verpackt wurden.Display.getDefault(). AsyncExec gibt InvocationTargetException
Angenommen, ich habe einen Zuhörer, der auf eine Taste klicken soll.
Listener enterlisner = new Listener() {
@Override
public void handleEvent(Event event)
{
Display.getDefault().asyncExec(new Runnable()
{
public void run()
{
try
{
if((event.keyCode == SWT.CR || event.keyCode == 13 || event.type == SWT.Selection) && btnAdd.isEnabled())
{
new ProgressMonitorDialog(shell).run(true, true, new IRunnableWithProgress()
{
@Override
public void run(final IProgressMonitor monitor) throws InvocationTargetException,
InterruptedException
{
// method1()
// method2() {method2.1() , method2.2()}
// method3() {method3.1() , method3.2()}
// ....
// ...
// method10
}
});
}
}
catch (InvocationTargetException | InterruptedException e)
{
e.printStackTrace();
}
}
});
}
};
Könnte jemand bitte verweisen link denken und lassen Sie mich wissen, wo ich falsch bin?
Wie verzweigen Sie Stück von Methoden, die in einem Hintergrundthread ausgeführt wird?
Sie müssen uns ein minimales Beispiel für Ihren Code zu erhalten und die genaue Nachricht, die Sie bekommen. –
Hallo Greg. Sie können oben auf den Link klicken, wo ich den gesamten Code geschrieben habe –
Es gibt zu viel Code dort und es sagt nicht klar, was die InvocationTargetException ist. Wir brauchen einen [MCVE]. Aber alles in asyncExec zu umgeben ist mit ziemlicher Sicherheit falsch. –