Da es SWTException ist, habe ich die syncExec-Methode verwendet, aber ich konnte das SWTException-Problem nicht aus meinem Code wiederherstellen. Bitte vorschlagen.Problem bezüglich SWTException: Ungültige Thread-Exception | synExec-Verwendung wird fehlgeschlagen
public class SampleSwtAction implements IWorkbenchWindowActionDelegate {
private IWorkbenchWindow window;
public SampleSwtAction() {
}
public void run(IAction action) {
MessageDialog.openInformation(
window.getShell(),
"SampleSwt",
"Hello,Run swt application");
window.getShell().getDisplay().syncExec(
new Runnable() {
public void run(){
Display firstDisplay = new Display();
Shell firstShell = new Shell(firstDisplay);
firstShell.setText("Sample SWT application");
firstShell.setSize(200,100);
firstShell.open();
while (!firstShell.isDisposed()) {
if (!firstDisplay.readAndDispatch())
firstDisplay.sleep();
}
firstDisplay.dispose();
}
});
}
public void selectionChanged(IAction action, ISelection selection) {
}
public void dispose() {
}
public void init(IWorkbenchWindow window) {
this.window = window;
}
}
So ist es nicht möglich, den gesamten Satz von Code in einem einzigen ausführbaren Eintrag –
@Abhishek: Ich glaube nicht, aber ich habe es nicht getestet. Haben Sie das verschachtelte 'syncExec' für Ihr' 'firstDisplay'' versucht? Ist die Ausnahme erneut aufgetreten? – VonC
Hallo. Endlich habe ich die Lösung :). Ihr Punkt war korrekt, da Display bereits eine UI-Aktualisierungseinheit war. –