Beendigungs-Callback registrieren (register_atexit)
Deklaration
original_callback = register_atexit(name, callback)
Parameter
- name
Textwert, erforderlich; Kennung des registrierten Callbacks. Ein gleichernameüberschreibt den bereits registrierten Callback. - callback
Funktion, erforderlich; beim Beenden des Skripts ausgeführte Funktion. Sie sollte schnell ausgeführt werden können und sicher wiederholbar sein. nil hebt die Registrierung des Callbacks für den aktuellennameauf.
Rückgabewert
- original_callback
Funktion; alter Callback, der von der Registrierung mit demselben Namen überschrieben wurde. Wenn zuvor keiner registriert war, wirdnilzurückgegeben; damit kann der alte Callback wiederhergestellt werden.
Beschreibung
Ein mit
register_atexitregistrierter Callback wird beim Beenden des Skripts ausgeführt, auch wenn der Benutzer das Skript mit der Lautstärketaste beendet, und garantiert vor der Lua-Speicherbereinigung aufgerufen.
Werden mehrere Callbacks mit unterschiedlichenname-Werten registriert, ist ihre Aufrufreihenfolge nicht festgelegt. Für eine bestimmte Reihenfolge muss sie in einem einzelnen Callback selbst gesteuert werden.
Bei zeitaufwendigen Operationen im Callback muss die Dauer selbst begrenzt werden, da sie sonst das Beenden beeinträchtigen kann.
Diese Funktion ist erst in Versionen nach 20250705 verfügbar.
Beispiel
register_atexit("cleanup", function()
sys.toast("脚本退出前清理资源")
sys.msleep(300)
end)
while true do
sys.toast("使用音量键尝试退出脚本\n" .. os.date("%Y-%m-%d %H:%M:%S"))
sys.msleep(1000)
end
Hinweis: Der obige Code verwendet die Funktionen sys.toast und sys.msleep aus anderen Kapiteln.