在JavaFX应用程序中,我有一个方法,在大输入时需要很长时间。当它正在加载时,我会打开一个对话框,并希望用户能够取消/关闭对话框并退出任务。我创建了一个任务,并在取消按钮处理中添加了其取消。但是取消并没有发生,任务并没有停止执行。
为什么点击按钮后任务没有被取消?
Task<Void> task = new Task<Void>() {
@Override
public Void call() throws Exception {
// calling a function that does heavy calculations in another class
};
task.setOnSucceeded(e -> {
startButton.setDisable(false);
});
}
new Thread(task).start();
cancelButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent e) {
System.out.println("Button handled");
task.cancel();
}
);
为什么点击按钮后任务没有被取消?
wait
,将响应一个interrupt
。 - Itai