Что нового

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

Сообщения
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 319
Александр Александрович,
Код:
$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 исправил ошибку. смотри его код
 
Автор
А
Сообщения
18
Репутация
0
все сделал в точности...теперь вообще такое ощущение что таймер не работает. Мой бесконечный цикл не прерывается
 

axlwor

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

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