我写了一些代码来从互联网上下载一些文件..如果用户点击cancle按钮,这必须停止..我使用cancle()方法来做它..但它没有工作..如何做我这样做..
ScheduledService<Object> service = new ScheduledService<Object>() {
protected Task<Object> createTask() {
return new Task<Object>() {
protected Object call() {
if (checkinternet()) {
downloadFiles();
}
return null;
}
};
}
};
service.start();
在按钮动作事件处理程序中,我调用了停止服务的取消方法。 但它没有成功..
service.cancel();
我该怎么做......
答案 0 :(得分:1)
没有自动取消任务或服务的方法。
从文档(https://docs.oracle.com/javase/8/javafx/interoperability-tutorial/concurrency.htm):
取消
Task
。Java中没有可靠的方法来阻止进程中的线程。但是,只要在任务上调用
cancel
,任务就必须停止处理。该任务应该在其工作期间定期检查是否通过在调用方法体内使用isCancelled
方法取消它。
上面的块中引用的示例如下所示:
Task<Integer> task = new Task<Integer>() {
@Override protected Integer call() throws Exception {
int iterations;
for (iterations = 0; iterations < 100000; iterations++) {
if (isCancelled()) {
break;
}
System.out.println("Iteration " + iterations);
}
return iterations;
}
};
不幸的是,你必须自己实现取消逻辑。