Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Pause or Timer? Добавлено: 28.01.04 22:46  

Автор вопроса:  LeZZvie | ICQ: 300785402 

Вообщем ситуация:

в проге нужно использовать задержки. Написал функцию типа Wait(seconds), в которой используется таймер. Проблема в том, что на разных ОС длина задержки разная. Из-за чего это? Да и к тому же, при работе некоторых программ (в частности WinAmp'a), таймер притормаживает. Но учитывая, что комп более-менее мощный,  то на него грешить нельзя. Неужели WinAmp использует слишком много таймеров? И нет ли какой-нить функции, организовывающую паузу? Просто кажись в VBA было нечто вроде PauseTime, но все это уже забыто, а толковой инфы нет...

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 boevik



Хранитель чата

ICQ: 137392264 

Вопросов: 8
Ответов: 557
 Web-сайт: www.hypertech.ru
 Профиль | | #1
Добавлено: 28.01.04 23:40

Sleep - функция задержки. Минус - прога "подвешивается", нет обработки event-ов.

Можно написать свою задержку с использованием цикла и DoEvents:

function Wait(byval aSec as long)

dim m_Start as single

m_Start = Timer

do while Timer-m_Start < aSec

DoEvents

Loop

end function

писал не в ВБ, возможны ошибки.

Минус, не сработает в полночь (Timer ведет отчет от полночи)

Ответить

Номер ответа: 2
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #2 Добавлено: 29.01.04 09:20

Все равно Sleep лучше. Он машину не грузит, другим приложениям проще работать... Да и работает стабильно.

Ответить

Номер ответа: 3
Автор ответа:
 boevik



Хранитель чата

ICQ: 137392264 

Вопросов: 8
Ответов: 557
 Web-сайт: www.hypertech.ru
 Профиль | | #3
Добавлено: 29.01.04 10:05

Я и не говорю, что лучше, а что хуже. Я предложил два способа, указав ,минусы каждого.

Можно сделати и комбинацию из двух. Тогда будет полегче процесору и прога будет реагировать на events.

function Wait(byval aSec as long)

dim m_Start as single

m_Start = Timer

do while Timer-m_Start < aSec

DoEvents

Sleep(500)   'заснуть на пол секунды

Loop

end function

Ответить

Номер ответа: 4
Автор ответа:
 LeZZvie



ICQ: 300785402 

Вопросов: 2
Ответов: 9
 Профиль | | #4 Добавлено: 29.01.04 22:11

Большое спасибо! Выручили!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам