Task<Void> task = new Task<Void>() {
public Void call() {
try {
// my task code
} catch (Exception e) {
log.error(e.getMessage(), e);
}
return null;
}
};
task.setOnSucceeded(event -> {
Platform.runLater(new Runnable() {
@Override
public void run() {
Alert alert = new Alert(AlertType.INFORMATION, "task success", ButtonType.OK);
alert.showAndWait();
}
});
});
在上面的代码中,我试图显示来自任务成功部分的警报消息。
我已将应用程序部署在远程计算机上,并使用远程桌面连接访问该应用程序。
当我将远程桌面连接窗口保持最小化时,我将警报消息清空。 (是的,我在RDC窗口打开时看到消息)
当我专注于父容器(舞台)时,它会刷新并显示正确的消息,或者只是alt + tab几次也可以。尝试了各种解决方案来设置模态,初始阶段,一些vm args等似乎没什么用。
知道为什么会出现这个问题吗?我理解任务是一个单独的线程,因此我使用platform.runlater?我做错了什么吗?任何替代解决方案?
任务在执行繁重操作时在新线程上运行。