Sobes.tech
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 նշանը աշխատանքում: Եթե աշխատանքը չի ստուգում այս նշանը, այն կշարունակի կատարվել մինչև ավարտը: