当你在eclipse插件中实现Job和Override run() - 方法时,你可以更改参数IProgressMonitor并跳过任务,如果用户按下这样取消:
if (!monitor.isCanceled()){
monitor.subTask("Doing stuff");
//do task
} else {
returnedStatus = Status.CANCEL_STATUS;
}
但这意味着至少必须在跳过其余任务之前完成当前活动的任务。有没有办法完全中止插件活动并在用户按下取消时执行finally块,而不等待下一个if (!monitor.isCanceled())
并且不将整个程序细分为subTasks?
答案 0 :(得分:1)
没有。您的工作必须是对取消作出反应的工作,因此您需要将工作分解为可以使用worked()
报告进度的任务并检查取消,或者您必须发送子进程监视器并执行操作同样的事情。
https://eclipse.org/articles/Article-Progress-Monitors/article.html