如果我创建了一个后台任务,这样...我可以通过点击“X”在UI中取消它...但是,我也希望能够取消它编程。
public class MyTaskLauncher {
public Map<String, Task.Backgroundable> myTasks = new HashMap<>();
public myTaskLaunchMethod(){
Task.Backgroundable myBgTask = new Task.Backgroundable(null, "MyTask", true, null) {
@Override
public void onCancel() {
super.onCancel();
System.out.println("cancelling")
}
@Override
public void onFinished() {
super.onFinished();
}
@Override
public void run(@NotNull ProgressIndicator progressIndicator) {
//do some work that I want to cancel programmatically somewhere else in my code
}
};
Log.trace("Starting task...");
ProgressManager.getInstance().run(myBgTask);
myTasks.put("task1", myBgTask);
}
}
现在任务运行,但如果发生特定事件,我需要立即停止该任务。
// somewhere else in my code, functionality I'm looking for.
MyTaskLauncher.myTasks.get("task1").CancelTask()
1条答案
按热度按时间2wnc66cl1#
当您从
run()
方法抛出ProcessCanceledException
时,回调将被取消。然后将执行onCancel()
中的代码。从
Task
接口中onCancel()
方法的定义和JavaDoc: