在SWT的线程开发中,基本思路是:将前台和后台分开为两个类;为后台处理开辟一个线程,让前台和后台处理相互不受影响;前台提供一些组件的操作方法,后台调用方法,并将执行情况写入到前台的组件中显示。
在SWT线程开发中,如果使用一个线程去访问另一个线程,则需要使用到Display对象的asyncExce方法,或者syncExce方法;
在关闭前台窗口时,需要将后台工作停止。由于是多线程,前台窗口关闭后,后台的程序还会在运行,并且回访问到前台的方法,这时,需要调用stop方法,使后台即使停止工作。
下边是一个示例:
前台运行类:
1:前台类中要有一个后台类成员,以便用this进行构造后台类;
2:前台类中要把后台需要访问的界面中的组件设为类的实例变量;
3:在前台类的main中实例化一个前台类对象,并调用open函数进行初始化;
4:前台类的open函数中对窗口进行基本的布局(创建按钮、标签、文本框等)并为组件添加事件监听;
5:可以把后台线程的创建放在事件监听中,也可以放在其外;
1 packagecn.com.sino.swt;2
3 importorg.eclipse.swt.SWT;4 importorg.eclipse.swt.events.SelectionAdapter;5 importorg.eclipse.swt.events.SelectionEvent;6 importorg.eclipse.swt.events.VerifyEvent;7 importorg.eclipse.swt.events.VerifyListener;8 importorg.eclipse.swt.layout.GridData;9 importorg.eclipse.swt.layout.GridLayout;10 importorg.eclipse.swt.widgets.Button;11 importorg.eclipse.swt.widgets.Display;12 importorg.eclipse.swt.widgets.Group;13 importorg.eclipse.swt.widgets.Label;14 importorg.eclipse.swt.widgets.ProgressBar;15 importorg.eclipse.swt.widgets.Shell;16 importorg.eclipse.swt.widgets.Text;