Что нового

Сделать паузу в 3 часа без слипа

maddoc

Новичок
Сообщения
48
Репутация
2
Как? )

Код:
Run1() ;; Запуск определенной программы
Run2()
Run3()
Run4()
Run5()

Во тут нужен слип на 3 часа, пока выполняются первые 5 заданий.
Closeall()

Run6()
Run7()
Run8()
Run9()
Run10()
Если делать слипом, повиснет интерфейс на время слипа ( выполнение других команд будет невозможно )

Какие есть альтернативы, подскажите нубу
 

snoitaleR

AutoIT Гуру
Сообщения
854
Репутация
223
maddoc
Если скрипт дошел до Sleep(), это означает, что первые пять функций завершились...
Верно?

И еще, если использовать RunWait(), то пока не закончится выполнение этой функции, скрипт не перейдет к выполнению следующей...
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 596
Репутация
938
Код:
For $i = 1 To 60000 Step 1
    Sleep(1)
Next

Пауза на минуту с помощью слипа на 1 мс
 
Автор
M

maddoc

Новичок
Сообщения
48
Репутация
2
snoitaleR сказал(а):
maddoc
Если скрипт дошел до Sleep(), это означает, что первые пять функций завершились...
Верно?

И еще, если использовать RunWait(), то пока не закончится выполнение этой функции, скрипт не перейдет к выполнению следующей...
Почти. Сначала запускается Х-кол-во приложений. Потом идет вот такая функция :

Код:
StartChecks()
Код:
Func StartChecks()
Local $iChekstime = ($iTimetochecks * 60000)
MemoWrite("StartChecks activated..: " &  _NowTime())
MemoWrite("Will check once in (m) : " & $iTimetochecks)

AdlibRegister("RunBotCheks", $iChekstime)
EndFunc
Тоесть :
Run1() ;; Запуск определенной программы
Run2()
Run3()
Run4()
Run5()
StartChecks()

;; Тут слип. После слипа закрываем все
AdlibUnRegister("RunBotCheks")
Closeall() ;; все закрыли

;; Запускаем следующую паритю
Run6()
Run7()
Run8()
Run9()
Run10()
StartChecks()
;; Тут слип. После слипа закрываем все
AdlibUnRegister("RunBotCheks")
Closeall() ;; все закрыли

Ну и потом возвращаемся на начало круга, и так по кругу


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

Перефразирую.

Тоесть первые 5 приложений должны быть запущены в течении 6 часов . Функция StartChecks() отвечает за проверку - не вылетели ли приложения, и так далее, в случае обнаружение чего-либо, перезапустит нужное приложение.

Тоесть :
Мне нужно задать некую цикличность.
В своем первом скрипте я делал слипы 15м + запуск проверки.. Но как то это не секси выглядело :

Код:
Func SleepTimer()
MemoWrite("Sleep Timer Started....: " & @Hour & ":" & @MIN & ":" & @SEC )
Global $timer = 0
Local $Ntime = 0
While $Ntime <= 300
	Sleep(900000) ;; 15 min
;~ 	Sleep(30000) ;; 30sec for testings
	boterror() ;; функция проверки бота на вылет с ошибкой, и скрин если вылет был.
    wowerror() ;; функция проверки окон вова на 132 еррор и скрина если еррор был.
    GlobalBotCheck() ;; функция проверки бота на онлай, исходя из показателей HP в окне бота.

$timer = $timer + 900000 ;; 15 m

$Ntime = $timer / 60000
MemoWrite("Timer : " & $Ntime)
WEnd
TakeScreen() ;; Делаем скрины по завершению круга
MemoWrite("Sleep timer done")
EndFunc
Тоесть оно конечно работало, но вис нафиг интерфейс )
 

snoitaleR

AutoIT Гуру
Сообщения
854
Репутация
223
maddoc
Я думаю, может заменить:

AdlibRegister("RunBotCheks", $iChekstime)

на:

Код:
$begin=TimerInit()
While True
RunBotCheks()
Sleep($iChekstime)
if TimerDiff($begin)>=10800000 Then ExitLoop
WEnd
 
Автор
M

maddoc

Новичок
Сообщения
48
Репутация
2
Потестим, да , я думал о нечто-подобном с TimerDiff
 
Верх