/* Page prose (ja) */
"CleaningUpOnTermination" = "# onTermination でクリーンアップする\n\n本物のセンサーは、もう誰も聞いていないときにはオフにする必要があります。さもないと、いつまでもサンプリングを続け（そしてバッテリーを消耗させ）てしまいます。continuation はまさにそのためのフックを与えてくれます。**`onTermination` は stream が終わるときに一度だけ実行されます。**それが正常に終了したのであれ、消費側が立ち去ったのであれ、同じです。\n\nこのバージョンは測定値を無期限にストリーミングし、終了時にセンサーの電源を落とします。";
"CleaningUpOnTermination-2" = "**実行して確認:** 3 つの測定値が表示され、それからループが `break` します。ループを抜けると stream が取り壊されるので、`onTermination` が `.cancelled` とともに発火し、`Consumer left: sensor powered down` を表示し、内側のプロデューサータスクをキャンセルします。そのフックがなければ、たとえ誰も読んでいなくても、`while` ループはバックグラウンドで永遠にサンプリングし続けます。典型的なリークです。\n\n`onTermination` はクリーンアップの引き出しです。タイマーをキャンセルし、ファイルを閉じ、オブザーバーの登録を解除します。continuation を手にしたらすぐに設定して、stream がどう終わっても準備ができているようにしましょう。\n\n* callout(補足): `onTermination` クロージャは `@Sendable` でなければなりません。stream を作成したタスクとは別のタスクから実行される可能性があるため、共有しても安全なもの（ここでキャンセルする `Task` ハンドルのような）にしか触れられません。そうでないものに手を伸ばせば、Swift 6 が指摘します。\n\n[前へ](@previous)  |  4 / 7 ページ  |  [次へ: キャンセルが消費を止める](@next)";
