关于回调函数的问题
autohotkey吧
全部回复
仅看楼主
level 3
银翼飞月 楼主
v2版本中,回调函数不会中断主程序的执行吗?我写了个listview,需要结果值用于后续处理,但回调启动后,主程序也会同步执行,等回调结束,主程序都执行完了。而且使用while或winwait都会被视为一个整体执行,回调只能在它们完整执行完才能插入。有什么好的解决办法吗?我现在是在主程序里加入一个隐藏的msgbox,回调结束时在关了它。
2026年03月26日 08点03分 1
level 9
AHK本质是单线程模拟多线程,公用一个消息检查队列,所以如果进了回调的线程,那主线程应该是休眠的,等回调执行完此继续。
但看你描述有点怪,你要拿回调的结果后续处理,那你肯定要等回调触发,你后续逻辑如果写在主线程,那就得想办法手动阻塞它,不然回调根本还没触发主线程就跑完了……
简单说,最简单且符合直觉的解法:把你需要回调结果处理的逻辑直接写进回调函数内部,事件驱动的逻辑本身就应该是异步的。
也可能我理解错了你的描述?
如果你的情况是进入了回调执行的阶段后,回调这个函数体执行流会被中断,那可能你在外面有定时器或者其他方式触发了新的线程互相中断了。
这种情况你可以给回调函数加 Critical 指令禁止中断
2026年03月28日 11点03分 2
1