Что нового

Как прервать выполнение цикла через определенное время?

Сообщения
18
Репутация
0
Здравствуйте. Столкнулся с новой проблемой(опять же из за малого опыта в использовании autoit). К примеру есть цикл
Код:
While 1=1
send("1")
send("2")
send("3")
WEnd

Так вот мне нужно чтобы через заданное время(к примеру 20 минут) этот цикл прерывался и посылалась команда(для примера - send("2")). Заранее извиняюсь если подобная тема уже поднималась. В этом случае пожалуйста дайте на нее ссылку. Надеюсь на вашу помощь :IL_AutoIt_1:
 

axlwor

Скриптер
Сообщения
657
Репутация
147
Код:
$begin = TimerInit()
while 1
send("1")
sleep(100)
send("2")
sleep(100)
send("3")
sleep(100)
$dif = TimerDiff($begin)/1000
if $dif >= 20*60 then
send("2")
sleep(100)
exitloop
endif
WEnd

хотя.. прочитав ответ edward_freedom, я уже не уверен в правильности своей :-[
 
Автор
А
Сообщения
18
Репутация
0
Нет, вы оказались совершенно правы) все получилось)


Добавлено:
Сообщение автоматически объединено:

:-[ан нет. Получилось не совсем то что я хотел. Если сделать все в точности как вы предлагаете, то после того как пройдет 20 минут и будет выполнено send("2") то цикл заново не запускается, а начинается бесконечная отправка send("2") либо же если я задам принудительно exitLoop то полностью выход из цикла(
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,320
Александр Александрович,
Код:
$begin = TimerInit()
While 1
	Send("1")
	Sleep(100)
	Send("2")
	Sleep(100)
	Send("3")
	Sleep(100)
	If TimerDiff($begin) > 20 * 60 * 1000 Then
		Send("2")
		Sleep(1000)
		$begin = TimerInit()
	EndIf
WEnd
 

axlwor

Скриптер
Сообщения
657
Репутация
147
тогда так
1. твой бесконечный цикл
2. раз в 20 минут прерывается (на любом неизвестном месте). посылается send(2)
3. п.1 продолжается с прерванного места?

упс :-[. обновить таймер забыл
 
Автор
А
Сообщения
18
Репутация
0
axlwor, после того как сработал таймер цикл должен запускаться заново. Задумка у меня такая :scratch: ;D. Вот кстати как правильно обнулить таймер? Я думаю как раз в этом и есть проблема, так как скрипт сверяет данные именно со "старого" таймера
 

axlwor

Скриптер
Сообщения
657
Репутация
147
madmasles исправил ошибку. смотри его код
 

axlwor

Скриптер
Сообщения
657
Репутация
147
Вставь внутрь if endif
Код:
ConsoleWrite(_Now() & " if сработал" & @CRLF)

только время поставь не 20 минут.. а минуты 2 :smile:
 
Верх