; Lexikos对SetTimer延时的解释:https://www.autohotkey.com/boards/viewtopic.php?f=76&p=190621
; 总结:SetTimer操作20ms以上的等待任务才具备性价比,建议使用默认的周期 -100
#Persistent
Global t1:=A_TickCount
AsynchronousFunc("ahk_class Notepad", 100) ; 10秒内监测记事本窗口是否存在,超时后退出脚本
Loop
    ToolTip 主线程持续运算演示-%A_Index%
Return

AsynchronousFunc(WinTitle, Loop:=0) {
    Static Count := 0
    ; 当记事本窗口存在时,异步监测立即停止
    (WinExist(WinTitle) && Count := Loop-1)
    if (++Count!=Loop) {
        SetTimer %L%, % -100+6    L:=Func(A_ThisFunc).Bind(WinTitle, Loop) ; Bind()保持与函数参数相同
        Return True
    }
    ifWinExist, %WinTitle%,, MsgBox % "异步耗时仅做大致判断:`n`n等待耗时:" A_TickCount-t1 " 毫秒"
    ExitApp
    Return False
}

 

声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。