这个是由SWT的线程模型限制的,所以,你会抛出异常。这种情况用Display的syncExec()方法来更新界面。

解决方案 »

  1.   

    把A做成单例模式,在B中调用A的方法来显示要显示的内容
      

  2.   

    我再把情况说的详细点。A类创建的窗口要接受一些数据的输入,再将这些数据传递给B类的一个方法进行处理。这些是肯定没有问题的啦。主要是在B类使用这些数据前肯定要进行是否为空的判断。如果为空就要进行提示。显示一个MessageBox。这个MessageBox创建需要一个Shell。最开始是传递A类中的。后来是在B类中新建一个。leonwu1981_2(精童欲女)说的办法我用过。是可以用。问题是我要在B类执行操作的时候,A类的窗体不死掉。点终止能终止B类的操作。这肯定需要B类用一个线程来完成操作。这就是我问问题的原因。达伦兄说的那个方法我听说过。但不知道具体怎么用。我在B类中使用了这个方法。但是还是一样的异常抛出。因为B类中没有任何窗体的创建,所以这里调用的Display这个对象是从A类中传递过来的。我也用另外的方法获取A类的Display对象,也是不行的。