HarmonyOS 无法取消taskpool.SequenceRunner?

1、初始化taskpool.SequenceRunner对象;

2、向taskpool.SequenceRunner对象提交任务;

3、使用taskpool.cancel取消还未开始执行的任务;

4、闪退提示:

The task to cancel does not exist, taskpool:: task is not executed or has been executed

测试代码:

test() {
  console.log(`item test9`)
  let task1: taskpool.Task = new taskpool.Task(ThreadPool.additionDelay, 5000);
  let task2: taskpool.Task = new taskpool.Task(ThreadPool.additionDelay, 2000);
  let task3: taskpool.Task = new taskpool.Task(ThreadPool.additionDelay, 4000);
  let runner: taskpool.SequenceRunner = new taskpool.SequenceRunner();

  task1.onStartExecution(() => {
    console.log(`task1 start`)
  })
  task2.onStartExecution(() => {
    console.log(`task2 start`)
  })
  task3.onStartExecution(() => {
    console.log(`task3 start`)
  })

  runner.execute(task1).then(() => {
    console.log(`task1 done`)
  })
  runner.execute(task2).then(() => {
    console.log(`task2 done`)
  })
  runner.execute(task3).then(() => {
    console.log(`task3 done`)
  })

  setTimeout(() => {
    console.log(`task2 cancel`)
    taskpool.cancel(task2)
  }, 2000)
  console.log(`test9 done`)
}

@Concurrent
export async function additionDelay(delay: number) {
  let start: number = new Date().getTime();
  while (new Date().getTime() - start < delay) {
    continue;
  }
}
阅读 455
1 个回答
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进