我有一个这样的递归方法:
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,所以我尝试使用 Job,但我的问题是我希望只为选中的 TreeItem 执行更新模型,它应该遵循选中的 TreeItems 的顺序。如果我使用 Job,我无法控制首先处理哪个选中的 TreeIem。我还尝试将整个 executeAction 方法放在一个 Job 中,但在访问 TreeItem 时遇到了无效线程。
我需要一些想法,以便我可以在保持顺序而不冻结我的 UI 的同时创建一个新线程。
谢谢。