这是我的代码的简化版本。 configurations
是ILaunchConfiguration
类型的数组。
for (int j = 0; j < configurations.length; j++) {
configurations[j].launch("debug", null);
}
我希望实现每个ILaunchConfiguration
仅在前一个C
终止时启动。使用我当前的代码我有线程行为。所有配置同时启动。
我应该改变什么?
答案 0 :(得分:2)
您无法在一个简单的循环中执行此操作,因为您必须使用IDebugEventSetListener
侦听器来侦听启动终止所创建的每个进程。
当您致电ILaunchConfiguration.launch
时,您会收到ILaunch
个对象。然后,您可以调用ILaunch.getProcesses
来获取由启动创建的IProcess
个对象数组(可能会创建多个进程)。
使用:
设置IDebugSetEventListener
DebugPlugin.getDefault().addDebugEventListener(listener);
在监听器handleDebugEvents
中,您可以检查以下内容完成的过程:
public void handleDebugEvents(DebugEvent [] events)
{
for (DebugEvent event : events) {
Object source = event.getSource();
if (source instanceof IProcess &&
event.getKind() == DebugEvent.TERMINATE) {
// TODO check if the process terminating is one you are interested in
}
}
}
一旦启动的所有流程终止,您就可以进行下一次启动。