如何使用 IntelliJ 插件 SDK 取消 Task.Backgroundable

问题描述 投票:0回答:0

如果我像这样创建后台任务......我可以通过单击“X”在用户界面中取消它......但是,我也希望能够以编程方式取消它。

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()
java intellij-plugin
© www.soinside.com 2019 - 2024. All rights reserved.