Переключение на Главную Страницу Страницы: 1 2 [3] 4  ОтправитьПечать
Очень популярная тема (более 25 ответов) Встроенный класс Таймер (число прочтений - 24594 )
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Встроенный класс Таймер
Ответ #30 - 10. Октября 2007 :: 10:17
Печать  
Цитата:
Да, был на 100% уверен, что ОбработкаОжидания и Таймер не будут работать, когда работает какая-то другая обработка, не отпуская проц.
Это здорово и дает нам некое подобие многопоточности

Да, это дает некое подобие многопоточности (если не издеваться над железом, как kms Очень довольный)
Скоро будет год, как я одновременно использую несколько ОбработокОжидания с малым интервалом для очень серьезных задач. Так что не переживай Улыбка
  
Наверх
ICQ  
IP записан
 
pavlo
1c++ donor
1c++ power user
Отсутствует



Сообщений: 712
Местоположение: г. Новосибирск
Зарегистрирован: 10. Ноября 2006
Пол: Мужской
Re: Встроенный класс Таймер
Ответ #31 - 17. Марта 2009 :: 06:20
Печать  
а кто знает, можно ли реализовать такое...
есть выборка документов и в цикле бы на время уснуть, потом продолжить цикл и т.д. после некоторого количества секунд?

Сейчас конечно сделал процедуру в которой Предупреждение("",10) выдается, а теле кода использую _GetPerformanceCounter() и смотрю, если разница есть по интервалу, то вызываю эту процедуру.

Но у предупреждение есть недостаток того, что засыпает нафиг если не активное окно.
и всплывание его постоянно, тоже не кузяво Улыбка
  

1с++     3.2.4.1
Formex  2.0.5.99b
Наверх
IP записан
 
EugenVitla
Junior Member
**
Отсутствует


школьнег

Сообщений: 82
Местоположение: Москва
Зарегистрирован: 21. Марта 2008
Пол: Мужской
Re: Встроенный класс Таймер
Ответ #32 - 17. Марта 2009 :: 07:19
Печать  
pavlo писал(а) 17. Марта 2009 :: 06:20:
а кто знает, можно ли реализовать такое...
есть выборка документов и в цикле бы на время уснуть, потом продолжить цикл и т.д. после некоторого количества секунд?

У romix есть ВК для этого. Что-то вроде 1Csleep называлась.
  
Наверх
IP записан
 
dnp
Senior Member
****
Отсутствует


.

Сообщений: 479
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Встроенный класс Таймер
Ответ #33 - 17. Марта 2009 :: 07:36
Печать  
Я сделал так (без sleep):

. В рабочем цикле, после каждой итерации, идет проверка по _GetPerformanceCounter() не превышен ли установленный интервал работы и если да - цикл стопится.
. Запускается обработка ожиджания, которая по истечении желаемой паузы запустит цикл дальше.
. Во время паузы можно нажать кнопку "стоп" или успеть что-нибудь сделать в 1С Улыбка
  
Наверх
ICQ  
IP записан
 
pavlo
1c++ donor
1c++ power user
Отсутствует



Сообщений: 712
Местоположение: г. Новосибирск
Зарегистрирован: 10. Ноября 2006
Пол: Мужской
Re: Встроенный класс Таймер
Ответ #34 - 17. Марта 2009 :: 07:53
Печать  
dnp писал(а) 17. Марта 2009 :: 07:36:
Я сделал так (без sleep):

. В рабочем цикле, после каждой итерации, идет проверка по _GetPerformanceCounter() не превышен ли установленный интервал работы и если да - цикл стопится.
. Запускается обработка ожиджания, которая по истечении желаемой паузы запустит цикл дальше.
. Во время паузы можно нажать кнопку "стоп" или успеть что-нибудь сделать в 1С Улыбка


Ага, так почти и сделано, кстати спасибо, есть же классный метод у класса Система.Уснуть() и при не активном окне пашет Улыбка
  

1с++     3.2.4.1
Formex  2.0.5.99b
Наверх
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Встроенный класс Таймер
Ответ #35 - 17. Марта 2009 :: 09:20
Печать  
Да, я Система::Уснуть для подобных задач и делал Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
pavlo
1c++ donor
1c++ power user
Отсутствует



Сообщений: 712
Местоположение: г. Новосибирск
Зарегистрирован: 10. Ноября 2006
Пол: Мужской
Re: Встроенный класс Таймер
Ответ #36 - 17. Марта 2009 :: 10:07
Печать  
artbear писал(а) 17. Марта 2009 :: 09:20:
Да, я Система::Уснуть для подобных задач и делал Улыбка


Ага, делал просто субъективный тест и получилось при базовой нагрузке на проц 30% при работе, если Предупреждение("",5) делать то проц падает до 1-5%, а если уснуть до 0% Улыбка
  

1с++     3.2.4.1
Formex  2.0.5.99b
Наверх
IP записан
 
Valera
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 4
Зарегистрирован: 01. Августа 2009
Re: Встроенный класс Таймер
Ответ #37 - 01. Августа 2009 :: 22:20
Печать  
У меня не работает:

Процедура Сооб()
     Сообщить("Что-то");
КонецПроцедуры      // Сооб

Процедура Сформировать()
     Таймер = СоздатьОбъект("Таймер");
     Таймер.Запустить(10);
     Таймер.ЗадатьОбработчикВМодулеФормы(Контекст,"Сооб");
     Сообщить(Таймер.Запущен);
     Сообщить(Таймер.Интервал);
КонецПроцедуры   

...в чем может быть дело?
  
Наверх
 
IP записан
 
khomen
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 4
Зарегистрирован: 02. Августа 2009
Re: Встроенный класс Таймер
Ответ #38 - 02. Августа 2009 :: 14:00
Печать  
Valera писал(а) 01. Августа 2009 :: 22:20:
У меня не работает:

Процедура Сооб()
    Сообщить("Что-то");
КонецПроцедуры      // Сооб

Процедура Сформировать()
    Таймер = СоздатьОбъект("Таймер");
    Таймер.Запустить(10);
    Таймер.ЗадатьОбработчикВМодулеФормы(Контекст,"Сооб");
    Сообщить(Таймер.Запущен);
    Сообщить(Таймер.Интервал);
КонецПроцедуры  

...в чем может быть дело?


Переменную таймер объяви, уже выше написано.
  
Наверх
 
IP записан
 
classic
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 330
Местоположение: г. Харьков
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Встроенный класс Таймер
Ответ #39 - 14. Октября 2009 :: 06:37
Печать  
Не могу понять - у меня таймер срабатывает ограниченное количество раз Ужас
Создаю объект, переменная объявлена.
Код
Выбрать все
	Таймер = СоздатьОбъект("Таймер");
	Таймер.ЗадатьОбработчикВОбъекте(вирт(), "Таймер");
	Таймер.Запустить(5000);
 


При параметре 5000 событие вызывается только один раз. При параметре 500 - ровно 10 раз. Если поставить 5, то окончания я не дождался - работает вроде как положено.
Что обидно, даже если записать обработчик вот так:
Код
Выбрать все
// ===============================
Процедура Таймер() Экспорт
	Сообщить("Таймер " + ТекущееВремя());
	Таймер = СоздатьОбъект("Таймер");
	Таймер.ЗадатьОбработчикВОбъекте(вирт(), "Таймер");
	Таймер.Запустить(5000);
КонецПроцедуры //Таймер
 


то второй раз событые не вызывается Озадачен. Что я не так делаю?
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Встроенный класс Таймер
Ответ #40 - 14. Октября 2009 :: 10:52
Печать  
Переменная Таймер должна быть глобальной - например, в модуле формы или в ГМ.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
classic
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 330
Местоположение: г. Харьков
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Встроенный класс Таймер
Ответ #41 - 14. Октября 2009 :: 13:59
Печать  
Я пишу класс, который должен вызывать сам себя, создание таймера хочу делать в конструкторе. переменная таймер - это переменная класса (или как это называется? Приватное свойство).
Нужно вынести в форму, которая содержит экземпляр класса? Ща проверю
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Встроенный класс Таймер
Ответ #42 - 15. Октября 2009 :: 02:57
Печать  
classic писал(а) 14. Октября 2009 :: 13:59:
Я пишу класс, который должен вызывать сам себя, создание таймера хочу делать в конструкторе. переменная таймер - это переменная класса (или как это называется? Приватное свойство).
Нужно вынести в форму, которая содержит экземпляр класса? Ща проверю

Нет, в этом случае в форму таймер выносить не обязательно.
Главное, чтобы таймер не удалялся сразу же после создания, как в таком коде
Цитата:
Перем Таймер;
Таймер = СоздатьОбъект("Таймер");
Таймер.ЗадатьОбработчикВОбъекте(вирт(), "Таймер");
Таймер.Запустить(5000);
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
classic
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 330
Местоположение: г. Харьков
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Встроенный класс Таймер
Ответ #43 - 15. Октября 2009 :: 05:38
Печать  
Класс у меня тыщи на 2 строк, уже года три в разработке. Там в друго местем была переменная с тем же названием, давно забыл об этом участке - как туда выполнение попадало, так таймер и останавливалсяУлыбка
Пора, наверное, в отпуск - что-то количество моих вопросов, на которые и сам мог бы ответить, в последнее время зашкаливает.
  
Наверх
 
IP записан
 
sergey78
YaBB Newbies
*
Отсутствует



Сообщений: 10
Зарегистрирован: 11. Июня 2008
Пол: Мужской
Re: Встроенный класс Таймер
Ответ #44 - 11. Ноября 2009 :: 13:22
Печать  
как-нибудь решается проблема следующего вида:
когда по таймеру выполняется какая-нибудь процедура, то поле ввода, в котором находится курсор, полностью выделяется....
Из-за этого пользователь набирает текст, а тут бац - таймер сработал, весь текст выделился и тут же удалился, т.к. пользователь нажал очередной символ.... Плачущий
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 [3] 4 
ОтправитьПечать