Что нового

Как чтобы после вызова функции, код что ниже обрабатывался?

agikon

Знающий
Сообщения
789
Репутация
17
Есть код, потом вызывается функция, и скрипт обрабатывает эту функцию, а код что ниже ждет пока функция обработается. А как чтобы и функция запустилась и код что ниже обрабатывался?

От как пример
Код:
;--код 
_my_funktion() ; вызываем функцию
;-- теперь этот код ждёт пока обработается эта функция. А надо чтобы он выполнялся и не ждал завершения функции


Func _my_funktion()
;- код функции
EndFunc
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
agikon,
Можно конкретнее, что делает функция и что дальнейший код.
 
Автор
A

agikon

Знающий
Сообщения
789
Репутация
17
в функции есть некий sleep. И в это время основной код что ниже под вызовом функции тоже ждет пока этот sleep у функции закончится.
Конкретно функция отсчитывает выключение секунды до выключения компа. А мне надо чтобы функция отсчитывала паралельно с основным кодом.
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
madmasles
agikon, хочет чтоб запустилась функция а дальнейший код не ждал её завершения и выполнялся дальше
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Это сойдёт ?:
Код:
;--код
$init = TimerInit()
AdlibRegister('_my_funktion', 1)
;--код 

Func _my_funktion()
	If TimerDiff($init) > 3000 Then Shutdown(1) ;ждёт 3сек. до выкл. комп.
EndFunc
 
Автор
A

agikon

Знающий
Сообщения
789
Репутация
17
Zaramot, у меня в функции счетчик который отсчитывает скоко ждать до выкл компа, вот такой
Код:
Sleep((GUICtrlRead($Input1) * 1000) * 60) ;В минутах


Поэтому мне надо чтобы функция просто работала паралельно коду, вот только код после вызова этой функции ждёт завершения этой самой функции.Как это обойти я не знаю.

Может можно прописать как то в условии что если $init выполняется больше секунды то продолжить выполнять тот код что ниже вызова функции, например
Код:
If  TimerDiff($init) > 1000 Then  <продолжить код что ниже фызова функции _my_funktion()>
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Ты про это ?:
Код:
;--код
$init = TimerInit()
AdlibRegister('_my_funktion', 1)
;--код 

Func _my_funktion()
    If TimerDiff($init) > (GUICtrlRead($Input1) * 1000) * 60 Then Shutdown(1)
EndFunc


У бери из функций _my_funktion команду Sleep, так как TimerDiff заменяет её.

P.S Скинь полностью свой скрипт.
 
Автор
A

agikon

Знающий
Сообщения
789
Репутация
17
Zaramot
спасибо, заменил на TimerDiff и теперь действительно всё заработало.

На счет скрипта то я сейчас на таком этапе развития что только смотрю как всё устроено и одно сделаю посмотрю как работает, и если усвоил то начинаю чтото другое шаманить, так что особо нечего выкладывать, у меня тут на одну строку кода приходится десять строк с коментами что и как делает эта строка, так что не хочу позорится в своих писульках :smile:
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
agikon ;D ;D ;D

P.S Пометь тему как "Решено".
 
Верх