遅延処理について記事を書きましたが、今回はキャンセル方法。例えば5秒の遅延処理を始めたものの、5秒経たないうちにその処理をキャンセルしたい。そういう場合の処理を説明します。
目次
遅延処理のキャンセル方法
例えば5秒後に”遅延処理”とプリントする場合のコードです。走り出すと他の命令があろうとなかろうと、とにかくプリントされます。
DispatchQueue.main.asyncAfter(deadline: .now() + 5.0) {
print("遅延処理")
}
これを次のコードに変更します。
var gworkItem = DispatchWorkItem(){} //インスタンス変数を定義します。
gworkItem = DispatchWorkItem() {
print("遅延処理") //遅延処理の内容を定義します。
}
DispatchQueue.main.asyncAfter(deadline: .now() + 5.0, execute: gworkItem)
そして次がキャンセルする関数です。他の命令の中に記述します。実行すると遅延処理がキャンセルされます。
gworkItem.cancel()
最後に
遅延処理を取り入れたプログラムを書くと、しばしば実行前にキャンセルしたい場合が出てきますので、かなり使えるコードと思います。
コメント