2016-10-20 16 views
3

私はEclipse RCPとSwingを使ってプロジェクトを進めています。私はinvokeLater()/invokeAndWait()asyncExec()/syncExec()の2つの対が多く使われているのを見る。invokeLater/invokeAndWaitとasyncExec/syncExecの相違点

私が理解するところでは、invokeLater()/invokeAndWait()はSwingに属し、asyncExec()/syncExec()はEclipseに属します。しかし、これらの2つの方法の違いは何ですか?

これらがすべてUIスレッドでタスクを実行するために使用されている場合は、タスクを送信するのと同じUIスレッドですか? invokeLater()asyncExec()は交換できますか?

私が電話している場合は、潜在的な落とし穴(デッドロックなど)はありますか? syncExec()からinvokeAndWait()

答えて

2

EclipseはSWTユーザーインターフェイスを使用します。これはSwingとは全く別のUIシステムです。 asyncExec()/syncExec()はSWTシステムの一部です。

Eclipse用のEclipse RCPまたはプラグインを作成する場合は、SWTコードを記述する必要があります。

SWTはSwingコードを使用する方法を提供しますが、これは最後の手段である必要があります。

それぞれ全く異なるUIシステムであるため、それぞれ独自のイベントループinvokeAndWaitsyncExecは互換性がありません。実行中のUIイベントループが2つある場合、混乱することは非常に簡単です。

関連する問題