Java 执行action.run()方法时出现延迟

Java 执行action.run()方法时出现延迟,java,eclipse-plugin,Java,Eclipse Plugin,我已经编写了一个utils方法,在这里我必须调用操作的run方法。 但是,我必须使用不同的参数重复调用这个util方法。 util方法签名是 clickPullDownMenu(String ViewID, String MenuPath){ Display.getDefault.syncexec(new Runnable(){ public void run(){ //few lines of code action.ru

我已经编写了一个utils方法,在这里我必须调用操作的run方法。 但是,我必须使用不同的参数重复调用这个util方法。 util方法签名是

clickPullDownMenu(String ViewID, String MenuPath){
    Display.getDefault.syncexec(new Runnable(){
        public void run(){
            //few lines of code
            action.run();
        }));
    }
}
当我给出“视图id”和要单击的“菜单”时。

例如

调用save菜单项后,“run”方法需要一些时间才能运行。因此,我用来检查数据导入是否完成的代码失败了

但是,当我调试相同的程序时,它成功地工作了,因为我在每个步骤中都使用了单步执行


有没有办法等到run()方法完全完成?我怀疑run()方法反过来可能会调用一些runnable。

如果您知道run方法平均需要多长时间,那么您可以等待该平均值的上限,以确保安全,如果它不会太长,就像这样:

    private static int TIME_OUT = 3000; // for 3 seconds
    new Handler().postDelayed(new Runnable()
    {
        @Override
        public void run()
        {
            // do your thing here
            finish();
        }
    }, TIME_OUT);

您可以将其放在action.run()调用所在的位置。

如果该操作是异步执行的,您需要知道异步操作是什么,以及它们是否生成您可以侦听的任何事件。Greg,run()方法中有一个this查看器,正在刷新。是否有方法等待查看器刷新?与其尝试等待,不如使用在查看器刷新完成时触发的侦听器或事件,并在其中执行其余处理。Greg,您能否快速启动以了解如何执行此操作?此处理程序类是否可用于eclipse RCP?
    private static int TIME_OUT = 3000; // for 3 seconds
    new Handler().postDelayed(new Runnable()
    {
        @Override
        public void run()
        {
            // do your thing here
            finish();
        }
    }, TIME_OUT);