Middle
Kas saab hiljem tühistada järjekorda lisatud ülesande?
sobes.tech AI
Vastus AI-lt
Jah, see on võimalik, kui ülesanne pole veel alanud.
Operation puhul:
Võite kutsuda välja meetodi cancel(). Kui operatsioon juba käib, muutub lipp isCancelled true-ks, ja arendaja peab ise selle tühistamise logikas käsitlema.
let operation = BlockOperation {
// Operatsiooni loogika, mis peab kontrollima operation.isCancelled
if OperationQueue.current?.isCancelled ?? false {
print("Operatsioon tühistatud")
return
}
// Edasine töö
}
let queue = OperationQueue()
queue.addOperation(operation)
// Hiljem, kui vaja, tühista
operation.cancel()
DispatchWorkItem puhul:
Luuakse DispatchWorkItem eksemplar, mis seejärel saadetakse järjekorda. Tühistamiseks kutsutakse välja meetod cancel(). Nagu Operation-i puhul, on see arendajale lipp.
let item = DispatchWorkItem {
// Ülesande loogika, mis peab kontrollima item.isCancelled
if item.isCancelled {
print("Ülesanne tühistatud")
return
}
// Edasine töö
}
let queue = DispatchQueue.global()
queue.async(execute: item)
// Hiljem, kui vaja, tühista
item.cancel()
Juba alanud ülesande tühistamiseks on vajalik, et kood sees ülesandes kontrolliks selgelt isCancelled lippu. Kui ülesanne seda lippu ei kontrolli, jätkab see täitmist kuni lõpuni.