Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ВременнАя задержка без загрузки процессора, Как организовать длительную задержку? 
V
    Опции темы
wilson
Дата 13.7.2008, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 11.6.2008

Репутация: нет
Всего: нет



Необходимо выполнять действие один раз в 5 мин в течение длительного времени(сутки). Беру исходник на задержку из местного FAQ:

Код
MsgBox "Через две секунды что-то произойдет."
' ждешь две секунды
EndTime = DateAdd("s", 2, Now)
Do Until Now > EndTime
   DoEvents
Loop
' что-то происходит :)
 

всё работает, но при этом процессор грузится на 100%.
Есть ли способ сделать тоже самое, но с меньшей нагрузкой на проц?
Спасибо.
PM MAIL   Вверх
Naghual
Дата 13.7.2008, 16:06 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Используйте контрол Timer и запускайте операции по его событиям.



--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
cardinal
Дата 13.7.2008, 16:27 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Тут пример есть (второй)
http://www.vbnet.ru/faq/showtopic.asp?id=261


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
JusTalionis
Дата 15.7.2008, 13:08 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 576
Регистрация: 11.7.2006

Репутация: 6
Всего: 17



Да, можно, конечно через таймер. Но гораздо проще получается через API:
Пишем в начале кода такую строчку: 
Код

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)


и после нее в программе доступна команда Sleep, например 
Код
 Sleep 100  'задержка на 0.1 секунды 


Sleep не загружает процессор, а, наоборот, разгружает его для других процессов.



PM MAIL   Вверх
Akina
Дата 15.7.2008, 13:30 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Можно также создать объект WScript и пользоваться его Sleep-ом.

Цитата(wilson @  13.7.2008,  16:57 Найти цитируемый пост)
Необходимо выполнять действие один раз в 5 мин в течение длительного времени

То есть задан ИНТЕРВАЛ. А при использовании Sleep он будет "уплывать". В данном конкретном случае использование контрола Timer предпочтительно.

Это сообщение отредактировал(а) Akina - 15.7.2008, 13:35


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
XOXOJI
Дата 21.9.2008, 15:27 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 20.9.2008

Репутация: 2
Всего: 2



Цитата(Akina @ 15.7.2008,  13:30)
Можно также создать объект WScript и пользоваться его Sleep-ом.

Цитата(wilson @  13.7.2008,  16:57 Найти цитируемый пост)
Необходимо выполнять действие один раз в 5 мин в течение длительного времени

То есть задан ИНТЕРВАЛ. А при использовании Sleep он будет "уплывать". В данном конкретном случае использование контрола Timer предпочтительно.

Недавно понадобилось сделать тоже самое, но вот незадача, контрол timer не принимает значения 65000 с копейками.. (точнее сказать 65536)так что если использовать timer то зделай так

Код

Private minutes as integer

Private Sub Timer1_Timer()
minutes=minutes+1
if minutes>=5 then
  minutes=0
  'твое действие
end if
End Sub


Это сообщение отредактировал(а) XOXOJI - 21.9.2008, 15:47
PM MAIL   Вверх
ProgramerForever
  Дата 1.10.2008, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 15.11.2006
Где: Новосибирск

Репутация: 2
Всего: 5



Я использовал примерно то же самое, только показывал всё это в окне, открытом модально. В окне сделал кнопку с надписью Пауза(S) где - S - количество оставшегося времени. И при необходимости можно было нажать на кнопку, и прервать процесс ожидания.
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0538 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.