Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.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
Multithreading 从后台线程更新javaFX浏览器内容_Multithreading_Javafx_Javafx Webengine - Fatal编程技术网

Multithreading 从后台线程更新javaFX浏览器内容

Multithreading 从后台线程更新javaFX浏览器内容,multithreading,javafx,javafx-webengine,Multithreading,Javafx,Javafx Webengine,我有一个内置浏览器的Javafx项目。我在浏览器中使用angularJS。当我试图从后台线程转到一个新状态时,视图在我与其中一个按钮交互之前不会这样做。因此,角度代码被调用,但视图被冻结,直到单击某个对象 Task task = new Task<Void>() { @Override public Void call() { while (true) { try { Sy

我有一个内置浏览器的Javafx项目。我在浏览器中使用angularJS。当我试图从后台线程转到一个新状态时,视图在我与其中一个按钮交互之前不会这样做。因此,角度代码被调用,但视图被冻结,直到单击某个对象

Task task = new Task<Void>() {
        @Override public Void call() {
            while (true) {
                try {
                    System.out.println("sLEEPING");
                    Thread.sleep(4000);
                    System.out.println("Reloading page");
                    Platform.runLater(() -> {
                        communicator.changeUI();

                    });
                    System.out.println("pAGE Reloaded");

                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    };
    Thread t = new Thread(task);
    t.start();

不要从后台线程更新UI的状态。请参阅中的线程部分。在Platform.runLater中包装实际更改UI的代码,或者使用和onSucceeded处理程序

例如:


我添加了代码,正在使用Platform.runLater,但视图仍在等待单击。我在想也许我需要告诉浏览器做一些刷新?非实际重新加载
// Runs in some background thread:
public class MyRunnable {

    @Override
    public void run() {
        // long-running code here...

        // to update UI:
        Platform.runLater(() -> {
            // update UI here...
        });
    }
}