Страница: 1 |
Страница: 1 |
Вопрос: Интересно ваше мнение...
Добавлено: 25.09.04 03:38
Автор вопроса: Navigator | ICQ: 177815632
Интересно, а у кого какое мнени по поводу контрола Timer? Дружит ли он с системными ресурсами? Если оных (таймеров) в проекте, допустим, 10?
Ответы
Всего ответов: 10
Номер ответа: 1
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #1
Добавлено: 25.09.04 05:06
Если тебя интересует именно VB-шный таймер, то это всёго лишь обёртка для API функции SetTimer.
Описание смотри в MSDN. А если вкратце, то задаётся окно, которому будет приходить сообщение WM_TIMER через заданный промежуток времени. Или вместо оконной процедуры можно указать любую CallBack функцию в которую будет приходить это сообщение. Если тебе не нравится стандартный таймер, то ты можешь отлавливать сообщения API-таймера через субклассинг окна. Просто VB не дружит с системой и поэтому ему необходимы интерфейсы для работы с ней. VB-таймер и является интерфейсом между средой ОС и средой виртуальной машины. На самом деле Форма ловит сообщение WM_TIMER и оформляет его в события класса, которые ты можешь посмотреть в процедуре Timer1_Timer.
Номер ответа: 2
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #2
Добавлено: 25.09.04 10:54
Таймеры - объекты ядра, и если их много то тормозить будет не твоя прога - а вся система
Номер ответа: 3
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #3
Добавлено: 25.09.04 13:54
Почти всегда из десяти таймеров можно сделать один - за счёт наворачивания кода callback-функции (ну или события Timer1_Timer).
Номер ответа: 4
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #4
Добавлено: 25.09.04 14:28
2 Comanche
Можно, но будет ли это удобно?
Номер ответа: 5
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #5
Добавлено: 25.09.04 15:55
Всё зависит от каждого конкретного случая.
В большинстве случаев - неудобно )
Номер ответа: 6
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #6
Добавлено: 25.09.04 23:28
утож :D
Номер ответа: 7
Автор ответа:
Navigator
ICQ: 177815632
Вопросов: 11
Ответов: 70
Профиль | | #7
Добавлено: 25.09.04 23:59
Всё ясно, всем спасибо.
Номер ответа: 8
Автор ответа:
Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #8
Добавлено: 26.09.04 21:24
Все десять таймеров, как я понимаю могут отличаться лишь положением вкл/выкл и частотой срабатывания. Т.е. создаём тип с такими параметрами, ставим у ОДНОГО таймера частоту самую маленькую из необходимых и работаем внутри процедуры нашего таймера с нашей толпой.
Я так делал (по крайней мере очень похожее) и мне кажется, что порой такой метод даже удобнее, чем куча таймеров.
Номер ответа: 9
Автор ответа:
Barsik
Разработчик Offline Client
ICQ: 343368641
Вопросов: 17
Ответов: 686
Web-сайт:
Профиль | | #9
Добавлено: 27.09.04 18:20
да, про таймеры...
винда выдерживает нагрузку в 32 таймера... один она уже сама использует...
Номер ответа: 10
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #10
Добавлено: 07.10.04 11:24
> винда выдерживает нагрузку в 32 таймера... один она уже сама использует...
Я как-то проводил небольшой эксперимент: сделал прогу (на VB6), на единственной
форме которой разместил таймер. Скомпилировал. Запустил много-много
экземпляров. И все продолжало работать, даже когда количество открытых
экземпляров программ перевалило за 50! Так что, ИМХО, про 32 таймера -
это туфта.
Код лабораторной работы (на форму надо поставить таймер с интервалом
200, Enabled=True):
Dim IsRed As Boolean
Private Sub Timer1_Timer()
IsRed = Not IsRed
Me.BackColor = IIf(IsRed, vbRed, vbBlue)
End Sub
50 запущенных экземпляров моя Win XP Pro SP1 держит отлично, все
работают и моргают.