Skip to main content

Runtime:生命周期控制器

Runtime 模块提供了一套标准化的全局事件循环机制。在 Windows 自动化脚本中,当 UI 窗口以非阻塞模式(block=False)显示时,脚本会立即向下执行;通过调用 Runtime.wait(),可以使脚本进入“待命状态”,直到被明确指令停止。


1. 导入模块

# 导入运行环境类
from ascript.windows.system import Runtime

2. 核心方法 (Methods)

🛑 阻塞驻留 wait()

启动全局事件循环。主线程会在此处停留,保持脚本进程存活。

代码块:

# 启动生命周期守卫
Runtime.wait()

功能特性:

  • 信号处理:内置了对 Ctrl+C (SIGINT) 和系统终止信号 (SIGTERM) 的监听,确保能优雅地释放资源并退出。
  • 低负载等待:采用 0.1s 的步进式等待策略,既保证了主线程对系统中断的毫秒级响应,又确保了极低的 CPU 占用。
  • 异常防护:自动处理 KeyboardInterrupt,防止终端报错。

✅ 停止运行 stop()

解除 wait() 的阻塞状态,允许主线程继续执行后续逻辑或退出。

代码块:

# 释放主线程阻塞
Runtime.stop()

3. 应用场景分析

在 AScript 开发中,Runtime 通常与 WebWindow 配合使用,解决“窗口一闪而过”或“主线程提前退出”的问题。

场景 A:UI 驱动型脚本

当你的脚本主要由前端界面控制时,需要主线程维持窗口存活。

from ascript.windows.ui import WebWindow
from ascript.windows.system import Runtime, R

win = WebWindow(R.ui("main.html"))

@win.expose
def quit_app():
# 当用户在网页点击退出按钮时,解除主线程阻塞
Runtime.stop()

# 1. 以非阻塞方式显示窗口
win.show(block=False)

# 2. 此处可以进行其他初始化逻辑
print("正在加载驱动与配置...")

# 3. 启动驻留,防止进程直接结束
Runtime.wait()

print("程序已