Задача асинхронного диспетчеризации не может быть возобновлена после отмены
У меня есть асинхронная задача, которую я хотел бы запустить через 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()
}