関数
withTaskCancellationHandler(operation:
onCancel:)
現在のタスクがキャンセルされた場合にすぐに呼び出されるキャンセルハンドラーを使用して操作を実行します。
iOS 13.0+ iPadOS 13.0+ macOS 10.15+ Mac Catalyst 13.0+
tvOS 13.0+ watchOS 6.0+ visionOS 1.0+
func withTaskCancellationHandler<T>(
議論
これは、タスクがキャンセルされるとキャンセルハンドラーが常に即座に呼び出されるという点で、キャンセルを協調的に確認してそれに応答する操作とは異なります。たとえば、操作でキャンセルを決してチェックしないコードが実行されている場合でも、キャンセルハンドラーは引き続き実行され、クリーンアップコードを実行する機会が提供されます。
ロックを取得するキャンセルハンドラーは、デッドロックを回避するように注意しなければなりません。キャンセルハンドラーは、タスクまたは他のタスクに関連した内部ロックを保持している間に呼び出される可能性があります。継続の再開など、タスクに対する他の操作でも、これらと同じ内部ロックが取得される場合があります。したがって、キャンセルハンドラーがロックを取得しなければならない場合、そのロックを保持している間、他のコードはタスクをキャンセルしたり、継続を再開したりしてはなりません。
キャンセルをチェックせず、常に渡された operation を実行します。
operation は呼び出し元の実行コンテキストで実行され、クロージャ内に含まれるコードが停止しない限り、それ自体は停止しません。操作 (operation) の実行中にキャンセルが発生した場合、キャンセル handler は operation と 同時 に実行されます。
既にキャンセルされたタスク
すでにキャンセルされた Task で withTaskCancellationHandler が使用される場合、操作が実行される直前に onCancel cancellation Handler が実行されます。これにより、キャンセルハンドラーは、オペレーションの実行後に実際の作業が実行されないようにするために、オペレーションが atomically にチェックする外部の "キャンセル済み" フラグを設定できるようになります。
以下も見よ
タスクのキャンセル
タスクがキャンセルされたことを示すエラー。
タスクの実行を停止すべきことを示します。
Success が Sendable に準拠し、Failure が Error に準拠する場合に使用できます。
タスクの実行を停止すべきかどうかを示すブール値。
Success が Sendable に準拠し、Failure が Error に準拠する場合に使用できます。
タスクの実行を停止すべきかどうかを示すブール値。
Success が never であり、Failure が never である場合に使用できます。
static func checkCancellation() throws
タスクがキャンセルされた場合エラーを throw します。
Success が never であり、Failure が never である場合に使用できます。
  廃止  
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ