/* Page prose (de) */
"CleaningUpOnTermination" = "# Aufräumen mit onTermination\n\nEin echter Sensor muss abgeschaltet werden, wenn niemand mehr zuhört; andernfalls misst er weiter (und leert den Akku) für immer. Die Continuation gibt dir genau dafür einen Haken: **`onTermination` läuft einmal, wenn der Stream endet**, egal ob er normal beendet hat oder der Konsument sich davongemacht hat.\n\nDiese Version streamt Messwerte unbegrenzt und fährt den Sensor beim Beenden herunter.";
"CleaningUpOnTermination-2" = "**Sieh es laufen:** drei Messwerte werden ausgegeben, dann macht die Schleife `break`. Das Verlassen der Schleife baut den Stream ab, also feuert `onTermination` mit `.cancelled`, gibt `Consumer left: sensor powered down` aus und bricht die innere erzeugende Aufgabe ab. Ohne diesen Haken würde die `while`-Schleife für immer im Hintergrund messen, obwohl niemand sie liest: ein klassisches Leck.\n\n`onTermination` ist deine Aufräumschublade: brich Timer ab, schließe Dateien, melde Beobachter ab. Richte es ein, sobald du die Continuation hast, damit es bereit ist, egal wie der Stream endet.\n\n* callout(Am Rande): Die `onTermination`-Closure muss `@Sendable` sein. Sie kann von einer anderen Aufgabe laufen als die, die den Stream erzeugt hat, also darf sie nur Dinge anfassen, die sicher zu teilen sind (wie das `Task`-Handle, das wir hier abbrechen). Swift 6 markiert es, wenn du nach etwas greifst, das es nicht ist.\n\n[Zurück](@previous)  |  Seite 4 von 7  |  [Weiter: Abbruch stoppt den Konsum](@next)";
