Middle
Əlavə edilmiş tapşırığı sonra ləğv etmək mümkündürmü?
sobes.tech Süni İntellekt
AI-dan cavab
Bəli, mümkündür, əgər vəzifə hələ başlamayıbsa.
Operation üçün:
cancel() metodunu çağırmaq olar. Əgər əməliyyat artıq davam edirsə, isCancelled bayrağı true olacaq və proqramçı onun ləğvini əməliyyatın daxilində idarə etməlidir.
let operation = BlockOperation {
// Əməliyyatın məntiqi, operation.isCancelled yoxlamalıdır
if OperationQueue.current?.isCancelled ?? false {
print("Əməliyyat ləğv edildi")
return
}
// Daha sonra iş
}
let queue = OperationQueue()
queue.addOperation(operation)
// Sonra, lazım olsa, ləğv et
operation.cancel()
DispatchWorkItem üçün:
DispatchWorkItem nümunəsi yaradılır və sonra növbəyə göndərilir. Ləğv etmək üçün cancel() metodu çağırılır. Operation ilə eyni şəkildə, bu proqramçı üçün bayraqdır.
let item = DispatchWorkItem {
// Tapşırığın məntiqi, item.isCancelled yoxlamalıdır
if item.isCancelled {
print("Tapşırıq ləğv edildi")
return
}
// Daha sonra iş
}
let queue = DispatchQueue.global()
queue.async(execute: item)
// Sonra, lazım olsa, ləğv et
item.cancel()
Artıq başlamış tapşırığı ləğv etmək üçün, tapşırığın içindəki kod açıq şəkildə isCancelled bayrağını yoxlamalıdır. Əgər tapşırıq bu bayrağı yoxlamazsa, o, tamamlanana qədər davam edəcək.