DispatchWorkItem.cancel()
を呼び出すことで、キュー内のまだ実行されていないアイテムの実行を中止できる。
コード
import Cocoa
import PlaygroundSupport
PlaygroundPage.current.needsIndefiniteExecution = true
let workItem = DispatchWorkItem() { Swift.print("not executed") }
DispatchQueue.main.asyncAfter(deadline: .now() + 1, execute: workItem)
workItem.cancel()
DispatchQueue.main.asyncAfter(deadline: .now() + 1) { Swift.print("executed") }
結果
executed
注意
DispatchWorkItem.cancel()
は実行中のアイテムを中断しない。
grand central dispatch - How to stop a DispatchWorkItem in GCD? - Stack Overflow