Eclipse rcp 显示类的syncExec()和asyncExec()之间的差异
我正在开发一个插件项目,其中我正在使用Eclipse后台处理。Eclipse rcp 显示类的syncExec()和asyncExec()之间的差异,eclipse-rcp,Eclipse Rcp,我正在开发一个插件项目,其中我正在使用Eclipse后台处理。 这门课的方法和步骤有什么区别?它们适用于哪些情况?任何例子都有帮助。来自 为了允许后台线程对属于UI线程的对象执行操作,使用Display的syncExec(Runnable-Runnable)和asynceec(Runnable-Runnable)方法。这些是SWT中唯一可以从任何线程调用的方法。它们允许UI线程同步执行runnable,导致后台线程等待runnable完成,或者异步允许后台线程继续执行而不等待结果。使用syncE
这门课的方法和步骤有什么区别?它们适用于哪些情况?任何例子都有帮助。来自 为了允许后台线程对属于UI线程的对象执行操作,使用Display的syncExec(Runnable-Runnable)和asynceec(Runnable-Runnable)方法。这些是SWT中唯一可以从任何线程调用的方法。它们允许UI线程同步执行runnable,导致后台线程等待runnable完成,或者异步允许后台线程继续执行而不等待结果。使用syncExec()执行的runnable最接近于对UI操作的等效直接调用,因为Java方法调用总是在继续之前等待结果,就像syncExec()一样
除了Tom Seidel的答案之外,以下是您可能希望使用其中一种方法的情况示例:
- 当您想在不关心结果的情况下更新UI中的某些内容时,请使用
。例如,更新标签或进度条asyncExec
- 使用
,方法调用后的代码需要确保UI处于一致状态,或者需要来自UI的一些数据。例如,从用户对话框获取一些数据。或者,您更新了一个小部件,在执行任何其他操作(例如,另一个UI更新)之前,您希望知道小部件更新已完成syncExec
- SWT实现单线程UI模型。在这个模型中,只有UI线程可以调用UI操作。如果尝试从UI线程外部访问SWT对象,则会出现异常“org.eclipse.SWT.SWT异常:无效线程访问”。因此,为了允许其他线程对属于UI线程的对象执行操作,SWT提供了syncExec和asyncExec方法
这可能有助于你举个例子