01/10/2018, 15:12
Cancel a Task trong Java
Chào các bạn,
Mình có 1 task để update scene graph như sau:
class CullingTask extends Task<Void>{
private ObservableList<Node> bgList;
private ImageView mask;
private Group pGroup;
public CullingTask(ObservableList<Node> list, Group present, ImageView img){
bgList = list;
mask = img;
pGroup = present;
}
@Override
protected Void call() throws Exception {
if (isCancelled()){
System.out.println("Cancel calculating");
return null;
}
final List<Node> list = calculatNodes();
Platform.runLater(new Runnable() {
@Override
public void run() {
if(bgList.isEmpty()){
final int size = list.size();
for(int i = 0; i < size; i++){
if(isCancelled()){
System.out.println("Cancel updating");
bgList.clear();
break;
}
bgList.add(list.get(i));
}
}
if(!isCancelled())
pGroup.getChildren().remove(mask);
}
});
return null;
}
}
Hàm sau để khởi tạo và chạy task:
public void culling() {
cullingTask = new CullingTask(bgGroup.getChildren(), presentPane, bgImage);
Thread th = new Thread(cullingTask);
th.setDaemon(true);
th.start();
}
Mình đặt biến cullingTask
global nhưng khi gọi cullingTask.cancel()
thì tại sao state isCancelled
không trả về true
? Đổi context thành CullingTask.this.isCancelled()
cũng ko tác dụng. Không biết mình miss chỗ nào?
Đây là print state của task khi chạy:
Bạn nào nhìn ra vấn đề chỗ này chỉ giúp mình với.
Bài liên quan
Ko tìm được nguyên nhân tại sao mình nhét thêm 1 cái
stop()
để dừng.