关于SWTException的问题:无效的线程异常| synExec使用失败

时间:2011-01-06 06:51:45

标签: eclipse swt eclipse-rcp

由于它是SWTException,我使用了syncExec方法,但即使我无法从我的代码中解决SWTException问题。请建议。

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;
    }
}

1 个答案:

答案 0 :(得分:0)

只是一个猜测,但您在Display中定义了一个新的firstDisplay'Runnable'。

不应该'你还为你在该显示器上进行的所有操作(更新UI)添加了syncExec(Runable)吗?


实际上,OP Abhishek Choudhary报告他不需要额外的显示“firstDisplay”,并在单syncExec(Runable)内执行他需要做的所有事情,默认{{1} }}