メインコンテンツまでスキップ

終了コールバックを登録する (register_atexit)

宣言

original_callback = register_atexit(name, callback)

パラメータ

  • name
    文字列型の必須パラメータです。登録するコールバックを識別するために使用します。同じ name を使用すると、登録済みのコールバックが上書きされます
  • callback
    関数型の必須パラメータです。スクリプトの終了時に実行されます。短時間で完了し、安全に繰り返し呼び出せるようにしてください。nil を指定すると、その name のコールバック登録を解除します

戻り値

  • original_callback
    関数型です。同じ名前で上書きされる前に登録されていたコールバックです。それまで登録されていなかった場合は nil を返します。元のコールバックを復元するために使用できます

説明

register_atexit で登録したコールバックは、ユーザーが 音量キー を使ってスクリプトを終了した場合も含め、スクリプトの終了時に実行され、Lua のガベージコレクションが行われる前に呼び出されることが保証されます
異なる name で複数のコールバックを登録した場合、呼び出し順序は保証されません。順番に実行する必要がある場合は、単一のコールバック内で処理を調整してください
コールバック内で時間のかかる処理を呼び出す場合は、実行時間を制限してください。長すぎると、スクリプト終了時の応答性に影響する可能性があります
この関数は 20250705 以降のバージョンでのみ使用できます

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

:上記のコードでは、本章で扱っていない関数 sys.toastsys.msleep を使用しています