Java FX - 如何终止ScheduledService
问题描述:
我写了一个小代码从网上下载一些文件..如果用户点击cancle按钮,这个必须停止..我使用cancle()方法做它..但它没有work..how做呢..Java FX - 如何终止ScheduledService
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();
我该怎么做...
答
没有自动取消任务或服务的方法。
从文档(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;
}
};
所以,你将不得不自己来实现取消逻辑,很遗憾。
+0
cancle method working .. –
我也有类似的问题,EJB定时器服务。一旦工作处于运行状态,调用cancel并不会中止它。这项工作只会在完成目前的“工作”之后停止。我想知道什么方法可以用来中止! – cdaiga
你试过.setOnCancelled()listner .. –