|
Как организовать таймаут в 1с Ø |
☑ | ||
|---|---|---|---|---|
|
0
Kropa
21.10.05
✎
13:13
|
Нужно организовать таймаут в 1с - чтобы между двумя операциями прошло некоторое заданое время. Как?
Нашел недокументированую функцию получения количества милисекунд от включениякомпа вот, что получилось Старт = Окр(_GetPerformanceCounter()/1000); Финиш = Окр(_GetPerformanceCounter()/1000) + Константа.ВремяОжидания; Пока Старт < Финиш Цикл Старт = Окр(_GetPerformanceCounter()/1000); КонецЦикла; все хорошо, но проц жрет на 100%, что не есть хорошо. |
|||
|
1
iZveRg
21.10.05
✎
13:16
|
1. При совершении операции пишешь запоминаешь время через эту функцию.
2. при второй попытке проверяешь, прошло ли нужное время... если не прошло - от винта! |
|||
|
2
Smitt
21.10.05
✎
13:18
|
//выдержим паузу
Темп=КаталогВременныхФайлов()+"sleep.vbs"; Текст=СоздатьОбъект("Текст"); Текст.ДобавитьСтроку("wscript.sleep "+СокрЛП(ВремяВМилисекундах)); Текст.Записать(Темп); cmdLine="wscript.exe "+Темп; WshShell=СоздатьОбъект("WScript.Shell"); WshShell.Run(cmdLine, 0, -1); ФС.УдалитьФайл(Темп); |
|||
|
3
dronis
21.10.05
✎
13:18
|
а ты Предупреждение("",Таймаут) используй :)
|
|||
|
4
Kropa
21.10.05
✎
13:23
|
(1) Я так и делаю - смотри код выше - но такое ожидание грузит проц на 100 %
(2) попробую (3) Предупреждение, вопрос не подходит |
|||
|
6
Kropa
21.10.05
✎
13:29
|
(2)Спасибо, то что надо! А где побольше посмотреть о vbs?
|
|||
|
7
iZveRg
21.10.05
✎
13:32
|
(4), между (0) и (1) принципиальная разница: незачем постоянно крутить счетчик в процедуре... нужно запомнить одно время, потом при попытке повторения операции посчитать второе время и в зависимости от разницы между этими временами принимать решение.... если же тебе вообще надо, чтоб некоторое время ничего сделать было нельзя - пробуй что-то типа (2)
|
|||
|
8
Максимушка
21.10.05
✎
13:33
|
+(2) Там только лучше сделать файло только 1 раз а потом проверять есть он или нет. И лучше делать в каталоге юзверя.
|
|||
|
9
Kropa
21.10.05
✎
13:35
|
(7) Ну а я как делаю? запоминаю время и принимаю решение - если еще не время, тогда что? тогда цикл.
|
|||
|
10
iZveRg
21.10.05
✎
13:42
|
(9) а тогда можно сказать "попробуйте через НН минут". и цикл не гонять.
|
|||
|
11
iZveRg
21.10.05
✎
13:44
|
"ТАЙМ-АУТ Осталось 64 сек."
+(10) получиццо как здесь =)) |
|||
|
12
smaharbA
21.10.05
✎
14:16
|
http://forum.mista.ru/topic.php?id=129840
Чтобы не делать как в (0) в ссылке можешь так, но с wsc можно еще методов добавить ЗадержкаСек=10; Locator=CreateObject("WbemScripting.SWbemLocator"); Service=Locator.ConnectServer(); UTCTime = Service.ExecNotificationQuery("Select * from __instancemodificationevent where TargetInstance isa 'Win32_UTCTime'"); sec=0; secold=0; Для к=0 по ЗадержкаСек Цикл objLatestEvent = UTCTime.NextEvent(); КонецЦикла; |
|||
|
13
Witch
21.10.05
✎
15:43
|
http://script-coding.info/
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |