Тема: AHK: Проблемы с SetTimer
Здравствуйте.
Зачем вообще создавались setTimer'ы в AutoHotKey? Чтобы организовать псевдопоток. Чтобы можно было выполнять одно действие, не препятствуя другому. Вещь благородная. Но стоит лишь немножко усложнить тело метки, выполняемой setTimer'ом, как всё резко летит в бездну и псевдопоток умирает...
Для примера сделал простенький код. В нём, если в 27 строке убрать sleep 500 - обе метки будут выполняться хорошо.
Если sleep 500 оставить, то приоритет метки start ни с того ни с сего становится главным, и не даёт выполняться метке met.
#SingleInstance Force
#Persistent
#NoEnv
t1 := "t1.txt"
t2 := "t2.txt"
t3 := "t3.txt"
var := 1
settimer, met, 250
settimer, start, 250
return
start:
while (var < 20)
{
out(t1, var " < 20. Wait " A_Index)
sleep 500
}
out(t1, "var is true")
var := false
return
met:
var++
out(t2, var)
sleep 500
return
;
out(file, var = "")
{
if !var
Random, var, 1000, 99999999
FileAppend, % var "`n", % file
}
Результат программы без sleep 500
Результат программы с sleep 500