2012-01-30 63 views
0

我寫了一個可以工作的Eclipse插件。然而,發生的情況是,在運行期間,沒有顯示控制檯輸出。只有當過程完成後,輸出纔會顯示在控制檯中。下面是我的處理程序,它表現爲類型org.eclipse.ui.commands的擴展點:如何在長時間運行的Eclipse插件中管理控制檯輸出?

public class MyHandler extends AbstractHandler { 

    @Override 
    public Object execute(ExecutionEvent event) throws ExecutionException { 
     ... 
     MessageConsoleStream out = myConsole.newMessageStream(); 
     ... 
     IConsoleView view = (IConsoleView) page.showView(id); 
     view.display(myConsole); 
     ... 

     out.println("output that only shows up at the end"); 
     myConsole.activate(); 
     ... 
     // Slow process 
     ... 
     out.println("everything is done"); 
     return null; 
    } 
} 

所以當進程運行,沒有在控制檯中。最後,兩條輸出線都會彈出到視圖中。

我明顯在做控制檯的事情不正確,但我還沒有找到任何好的例子,我的實驗也沒有證明非常有成效。請指教。

+0

給了out.flush()試試 – anq 2012-01-30 21:07:41

+0

@anq,這不是在問題,但我確實在'真正'的代碼中嘗試刷新。我不得不把它放在一個「工作」,並修復它。 – Dale 2012-01-31 12:45:53

回答

0

這工作:

public class Merge extends AbstractHandler { 
private static MessageConsole myConsole = null; 
private static ExecutionEvent event = null; 

@Override 
public Object execute(ExecutionEvent event) throws ExecutionException { 
    Merge.event = event; 

    //same idea as original post and other examples where it makes new or finds existing 
    myConsole = makeConsole(Merge.event); 

    Job job = new Job("My Job Name"){ 
     @Override 
     protected IStatus run(IProgressMonitor monitor){ 
      ... 
      if (blah) { 
       MessageConsoleStream out = myConsole.newMessageStream(); 
       out.println("output show up right away"); 
       ... 
       // Slow process 
       ... 
       out.println("everything is done"); 
      } else { 
       MessageDialog.openInformation(HandlerUtil.getActiveShell(Merge.event), "Information", "Please select valid file"); 
      } 
      monitor.done(); 
      return Status.OK_STATUS; 
     } 
    }; 
    job.setUser(true); 
    job.schedule(); 
    return null; 
} 
... 
} 
0

您可以考慮使用ProgressMonitor(可能在用戶想要中止的情況下取消),以便用戶可以看到發生了某些事情。

0

也許你可以在每次的out.print後撥打了out.flush()...

相關問題