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