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