でUIにアクセスしている間、私はこのような再帰的な方法があります:スレッド再帰的な方法
protected void executeAction(TreeItem ti)
{
boolean isChecked = ti.getChecked();
if (isChecked)
{
Somedata data = (SomeData) ti.getData();
String action = data.getSelectedAction();
ActionManager am = data.getActionManager();
AbstractActionAgent agent = am.getAction(action);
if (agent != null)
{
agent.updateModel(data); //Makes a server trips and long computation
}
}
int itemcnt = ti.getItemCount();
TreeItem[] childTrees = ti.getItems();
for (int i = 0; i < itemcnt; i++)
{
executeAction(childTrees[i]);
}
}
マイUPDATEMODEL方法は、UIをフリーズするので、私は仕事を使用してみましたが、私の問題は、私が欲しいということですチェックされたTreeItemに対してのみ実行される更新モデルであり、チェックされたTreeItemのシーケンスに従うべきである。私がJobを使用する場合、チェックされたTreeIemが最初に処理されるかどうかは制御できません。また、executeActionメソッド全体をJobに入れようとしましたが、TreeItemにアクセスする際に無効なスレッドが実行されました。
シーケンスを維持しながらUIをフリーズしないで新しいスレッドを実行できるようにするには、いくつかのアイデアが必要です。
ありがとうございました。
を作成します。この方法では、メインスレッドでSWTボタンをクリックしてから呼び出されます。 – MartinKahn