Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在运行另一个eclipse工作区作业之前等待eclipse工作区作业完成?_Eclipse_Eclipse Plugin_Eclipse Rcp - Fatal编程技术网

如何在运行另一个eclipse工作区作业之前等待eclipse工作区作业完成?

如何在运行另一个eclipse工作区作业之前等待eclipse工作区作业完成?,eclipse,eclipse-plugin,eclipse-rcp,Eclipse,Eclipse Plugin,Eclipse Rcp,job1发出一个远程命令,我想将结果打印到控制台 然后,job2将发出本地命令,并将结果打印到控制台 我尝试了join(),但我只在完成所有操作后获得控制台输出 public class MyHandler extends AbstractHandler { DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyy/MM/dd HH:mm:ss"); LocalDateTime now = LocalDateTime.n

job1发出一个远程命令,我想将结果打印到控制台

然后,job2将发出本地命令,并将结果打印到控制台

我尝试了join(),但我只在完成所有操作后获得控制台输出

public class MyHandler extends AbstractHandler {
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyy/MM/dd HH:mm:ss");
LocalDateTime now = LocalDateTime.now();

public Object execute(ExecutionEvent event) throws ExecutionException {

    WorkspaceJob job1 = new WorkspaceJob("Execute job1") {
        @Override
        public IStatus runInWorkspace(IProgressMonitor monitor) {
            Console.printObject("DEBUG job1 start: " + now);
            try {
                Thread.sleep(10000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            Console.printObject("DEBUG job1 end: " + now);
            return Status.OK_STATUS;
        }
    };
    job1.setUser(true);
    Console.printObject("Job 1 schedule");
    job1.schedule();
    // try {
    // job1.join();
    // } catch (InterruptedException e1) {
    //
    // e1.printStackTrace();
    // }

    WorkspaceJob job2 = new WorkspaceJob("Executing job2") {

        public IStatus runInWorkspace(IProgressMonitor monitor) {
            Console.printObject("DEBUG job2 start: " + now);
            Console.printObject("DEBUG job2 end: " + now);
            return Status.OK_STATUS;
        }
    };

    job2.setUser(true);
    Console.printObject("Job 2 schedule");
    job2.schedule();
    // try {
    // Console.printObject("Job 2 wait..");
    // job2.join();
    // Console.printObject("Job 2 done...");
    // } catch (InterruptedException e) {
    // e.printStackTrace();
    // }
    return null;
}

}

您不应该等待,因为这将阻塞UI线程,GUI将冻结。使用JobChangeListener在作业结束时收到通知。什么是控制台?我知道了。再次感谢格雷格!控制台允许我们打印到不同的控制台。