invokeLater/invokeAndWait 和 asyncExec/syncExec 之间的区别
Difference between invokeLater/invokeAndWait and asyncExec/syncExec
我正在使用 Eclipse RCP 和 Swing 开发一个项目。我看到有两对方法 invokeLater()/invokeAndWait()
和 asyncExec()/syncExec()
被大量使用。
据我了解,invokeLater()/invokeAndWait()
属于Swing,asyncExec()/syncExec()
属于Eclipse。但是这两对方法有什么区别呢?
如果它们都用于在 UI 线程上执行任务,那么它们 post 任务所在的是同一个 UI 线程吗? invokeLater()
和 asyncExec()
可以互换吗?
如果我打电话,是否有任何潜在的陷阱(例如死锁等) syncExec()
来自 invokeAndWait()
?
Eclipse 使用 SWT 用户界面,这是一个完全独立于 Swing 的 UI 系统。 asyncExec()/syncExec()
是 SWT 系统的一部分。
如果您正在为 Eclipse 编写 Eclipse RCP 或插件,您应该编写 SWT 代码。
SWT 确实提供了一种使用 Swing 代码的方法,但这应该是最后的手段。
由于它们是完全不同的 UI 系统,每个系统都有自己的事件循环 invokeAndWait
和 syncExec
不可互换。当有两个UI事件循环运行.
时,很容易陷入混乱
我正在使用 Eclipse RCP 和 Swing 开发一个项目。我看到有两对方法 invokeLater()/invokeAndWait()
和 asyncExec()/syncExec()
被大量使用。
据我了解,invokeLater()/invokeAndWait()
属于Swing,asyncExec()/syncExec()
属于Eclipse。但是这两对方法有什么区别呢?
如果它们都用于在 UI 线程上执行任务,那么它们 post 任务所在的是同一个 UI 线程吗? invokeLater()
和 asyncExec()
可以互换吗?
如果我打电话,是否有任何潜在的陷阱(例如死锁等) syncExec()
来自 invokeAndWait()
?
Eclipse 使用 SWT 用户界面,这是一个完全独立于 Swing 的 UI 系统。 asyncExec()/syncExec()
是 SWT 系统的一部分。
如果您正在为 Eclipse 编写 Eclipse RCP 或插件,您应该编写 SWT 代码。
SWT 确实提供了一种使用 Swing 代码的方法,但这应该是最后的手段。
由于它们是完全不同的 UI 系统,每个系统都有自己的事件循环 invokeAndWait
和 syncExec
不可互换。当有两个UI事件循环运行.