Задача асинхронного диспетчеризации не может быть возобновлена ​​после отмены

У меня есть асинхронная задача, которую я хотел бы запустить через 10 секунд после нажатия кнопки, и, нажав другую кнопку, я хотел бы отменить эту задачу.

При первом снимке задача запускается, как и ожидалось, через 10 секунд, но если я нажму кнопку отмены и попытаюсь запланировать повторный запуск задачи через 10 секунд, это не сработает.

var myTask = DispatchWorkItem {}

override func viewDidLoad() {
    super.viewDidLoad()

    myTask = DispatchWorkItem
    {
        NSLog("TASK_TRIGGERED")
    }
}

@IBAction func buttonStart_Touch(_sender: Any) {
    if (myTask.isCancelled) {
        //Reschedule task
        myTask.perform()
        DispatchQueue.main.asyncAfter(deadline: .now() + 10, execute: myTask)
    }
    else {
        //Schedule task
        DispatchQueue.main.asyncAfter(deadline: .now() + 10, execute: myTask)
    }
}

@IBAction func buttonCancel_Touch(_sender: Any) {
    //Stop task
    myTask.cancel()
}

0 ответов

Другие вопросы по тегам