Имя: Пароль:
1C
 
Как организовать таймаут в 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/