Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Интересно ваше мнение... Добавлено: 25.09.04 03:38  

Автор вопроса:  Navigator | ICQ: 177815632 
Интересно, а у кого какое мнени по поводу контрола Timer? Дружит ли он с системными ресурсами? Если оных (таймеров) в проекте, допустим, 10?

Ответить

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

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



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #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-сайт: hw.t-k.ru
 Профиль | | #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-сайт: neco.pisem.net
 Профиль | | #8
Добавлено: 26.09.04 21:24
Все десять таймеров, как я понимаю могут отличаться лишь положением вкл/выкл и частотой срабатывания. Т.е. создаём тип с такими параметрами, ставим у ОДНОГО таймера частоту самую маленькую из необходимых и работаем внутри процедуры нашего таймера с нашей толпой.
Я так делал (по крайней мере очень похожее) и мне кажется, что порой такой метод даже удобнее, чем куча таймеров.

Ответить

Номер ответа: 9
Автор ответа:
 Barsik



Разработчик Offline Client

ICQ: 343368641 

Вопросов: 17
Ответов: 686
 Web-сайт: barsik.newmail.ru
 Профиль | | #9
Добавлено: 27.09.04 18:20
да, про таймеры...
винда выдерживает нагрузку в 32 таймера... один она уже сама использует...

Ответить

Номер ответа: 10
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #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 держит отлично, все
работают и моргают.



Ответить

Страница: 1 |

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



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