我正在使用Eclipse和Swing进行一个项目。我看到有两对方法-- invokeLater()/invokeAndWait()和asyncExec()/syncExec() --经常使用。
据我所知,invokeLater()/invokeAndWait()属于Swing,asyncExec()/syncExec()属于Eclipse。但是这两种方法有什么区别呢?
如果它们都用于在UI线程上执行任务,那么它们将任务发布到的是同一个UI线程吗?invokeLater()和asyncExec()可以互换吗?
是否存在潜在的陷阱(如死锁等)如果我打电话给syncExec(),比如从invokeAndWait()打来的
发布于 2016-10-20 13:35:22
Eclipse使用SWT用户界面,这是一个与Swing完全不同的UI系统。asyncExec()/syncExec()是SWT系统的一部分。
如果您正在为Eclipse编写Eclipse或插件,则应该编写SWT代码。
SWT确实提供了一种使用Swing代码的方法,但这应该是最后的手段。
由于它们是完全不同的UI系统,每个系统都有自己的事件循环,invokeAndWait和syncExec是不可互换的。当有两个UI事件循环运行时,很容易陷入混乱。
https://stackoverflow.com/questions/40155636
复制相似问题