我使用每1秒运行一次的ScheduledExecutorService建立一个循环。我有一个WebView(JavaFX),我想从中调用一个函数。
如果我把它设为按钮,我可以调用函数:
button.setOnAction(event -> {
webEngine.executeScript("someFunction();");
});
并单击它并执行得很好,但是当我这样做时:
execService.scheduleAtFixedRate(()->{
loop();
webEngine.executeScript("someFunction();");
}, 3000L, 1000L, TimeUnit.MILLISECONDS);
程序在webEngine.executeScript("someFunction();");
处停止(如果我将该行放在loop()
方法中,则相同)
如何在程序的其余部分每秒执行someFunction()
?为什么暂停?
答案 0 :(得分:1)
请试试这个:
timer = new Timer();
timer.scheduleAtFixedRate(new WebViewProcess(), 3000, 1000);
private class WebViewProcess extends TimerTask {
@Override
public void run() {
Platform.runLater(() -> {
webEngine.executeScript("someFunction();");
});
}
}