我正在开发一个插件项目,我正在使用Eclipse后台处理.Display类
的syncExec()和asyncExec()方法有什么区别?它们适用于哪些情况?任何例子都可能有所帮助.
Tom*_*del 17
来自Q:为什么我得到错误"org.eclipse.swt.SWTException:无效的线程访问"?
要允许后台线程对属于UI线程的对象执行操作,请使用Display的方法syncExec(Runnable runnable)和asyncExec(Runnable runnable).这些是SWT中可以从任何线程调用的唯一方法.它们允许UI线程执行runnable,同步,导致后台线程等待runnable完成,或者异步允许后台线程继续执行而不等待结果.使用syncExec()执行的runnable最接近匹配对UI操作的等效直接调用,因为Java方法调用总是在继续之前等待结果,就像syncExec()一样.
除了Tom Seidel的答案之外,以下是您可能想要使用其中一种情况的示例:
使用asyncExec
时,你想不关心结果来更新UI的东西.例如,更新标签或进度条.
使用syncExec
其中下面这个方法调用的代码需要确保用户界面是一致的状态,或者从UI需要一些数据.例如,从用户对话框中获取一些数据.或者您更新窗口小部件并在执行任何其他操作(例如,另一个UI更新)之前,您想知道窗口小部件更新已完成.
归档时间: |
|
查看次数: |
10212 次 |
最近记录: |