2013-04-24 37 views
2

我在我的JFrame中有一個Web瀏覽器,我想我無法在退出應用程序時將它處理掉。在JFrame中處理javaFX web引擎

這裏是我的代碼,試圖實現這一目標:

Platform.runLater(new Runnable() { 
    @Override 
    public void run() { 
     webBrowserEngine.getLoadWorker().cancel(); 
     Platform.runLater(new Runnable() { 
      @Override 
      public void run() { 
       Platform.exit(); 
       SwingUtilities.invokeLater(new Runnable() { 
        @Override 
        public void run() { 
         getMainFrame().dispose(); // Is set to dispose on close 
         // SwingUtilities.invokeLater(new Runnable() { 
          // @Override 
          // public void run() { 
           // System.exit(0); 
          // } 
         // }); 
        } 
       }); 
      } 
     }); 
    } 
}); 

窗口關閉,但Java進程保持與該行返回始終爲false:

webBrowserEngine.getLoadWorker().cancel(); 
+0

可能重複[如何停止「JavaFX應用程序線程」](http://stackoverflow.com/questions/15808063/how-to-stop-javafx-application-thread) – durron597 2014-05-12 12:48:34

回答

0
Platform.exit(); 

強制FXApplicationThread終止。與它相關的一切最終都會最終確定下來。你可以通過擴展和覆蓋WebEngine類來測試它,以在finalize()觸發器上處理不同的事情。

另外,在WebEngine本身內存在與URL處理例程相關的自動處理器的實現。

Additinoally,WebEngine處理一些用於資源處理的URLLoader。由於它們在DLL中,所以它們有點奇怪,因此它們是原生的。

由此引發了一系列需要邏輯解決方法的MemoryAccessViolation異常。