Middle
Կարո՞ղ եք հետագայում չեղարկել հերթում ավելացված առաջադրանքը։
sobes.tech AI
Պատասխան AI-ից
Այո, հնարավոր է, եթե աշխատանքը դեռ չի սկսվել:
Որպես Operation:
Դուք կարող եք կանչել cancel() մեթոդը: Եթե գործողությունը արդեն ընթանում է, ապա isCancelled նշանը կդառնա true, և ծրագրավորողը պետք է ինքնուրույն կառավարի դրա չեղարկումը գործողության տրամաբանության մեջ:
let operation = BlockOperation {
// Գործողության տրամաբանությունը, որը պետք է ստուգի operation.isCancelled
if OperationQueue.current?.isCancelled ?? false {
print("Գործողությունը չեղարկվեց")
return
}
// Հետագա աշխատանք
}
let queue = OperationQueue()
queue.addOperation(operation)
// Հետո, եթե անհրաժեշտ է, չեղարկել
operation.cancel()
Որպես DispatchWorkItem:
Ստեղծվում է DispatchWorkItem օրինակ, որը հետո ուղարկվում է հերթին: Չեղարկելու համար կանչվում է cancel() մեթոդը: Ինչպես Operation-ի դեպքում, սա ծրագրավորողի համար նշան է:
let item = DispatchWorkItem {
// Թափանցիկության տրամաբանություն, որը պետք է ստուգի item.isCancelled
if item.isCancelled {
print("Աշխատանքը չեղարկվեց")
return
}
// Հետագա աշխատանք
}
let queue = DispatchQueue.global()
queue.async(execute: item)
// Հետո, եթե անհրաժեշտ է, չեղարկել
item.cancel()
Եթե արդեն սկսված աշխատանքը չեղարկելու համար, անհրաժեշտ է, որ կոդը բացահայտ ստուգի isCancelled նշանը աշխատանքում: Եթե աշխատանքը չի ստուգում այս նշանը, այն կշարունակի կատարվել մինչև ավարտը: