Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Вопрос про Timer Добавлено: 14.10.10 19:13  

Автор вопроса:  Алмаз
Здравствуйте! Подскажите,пожалуйста, как лучше реализовать такую задачу:
моё приложение должно выполнять ряд определённых действий циклически, причём у каждого действия, свой промежуток повторения.
Вопрос: Как лучше реализовать данную задачу, чтобы ничего невисло и т.п.? Можно ли организовать это, используя 1 таймер?

Ответить

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

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


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #1
Добавлено: 14.10.10 20:04
Очередь с приоритетами и после выполнения каждого действия совать в нее время выполнения следующего и его тип, после чего ставить таймер на оставшееся до следующего элемента в очереди время.

Ответить

Номер ответа: 2
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #2
Добавлено: 14.10.10 20:13
  1. Option Explicit
  2.  
  3. Private Sub Form_Load()
  4. Timer1.Interval = 10
  5. Me.ScaleMode = 3
  6. Me.AutoRedraw = True
  7. Me.FillStyle = 0
  8. End Sub
  9.  
  10. Private Sub Timer1_Timer()
  11. Static t(2) As Long
  12. If t(0) = 5 Then Timer_Action (0): t(0) = 0 Else t(0) = t(0) + 1
  13. If t(1) = 10 Then Timer_Action (1): t(1) = 0 Else t(1) = t(1) + 1
  14. If t(2) = 15 Then Timer_Action (2): t(2) = 0 Else t(2) = t(2) + 1
  15. End Sub
  16.  
  17. Private Sub Timer_Action(Value As Long)
  18. Static r(2) As Long, d(2) As Long
  19. If d(Value) = 0 Then d(Value) = -1
  20. If r(Value) = 0 Or r(Value) = 5 Then d(Value) = -d(Value)
  21. r(Value) = r(Value) + d(Value)
  22. Me.FillColor = Me.BackColor
  23. Me.Circle ((Value + 1) * 50, 50), 25, Me.BackColor
  24. Me.FillColor = vbRed
  25. Me.Circle ((Value + 1) * 50, 50), r(Value) * 5, vbRed
  26. End Sub

Ответить

Номер ответа: 3
Автор ответа:
 Алмаз



Вопросов: 2
Ответов: 6
 Профиль | | #3 Добавлено: 14.10.10 20:21
Спасибо, щас попробую осмыслить =)

Ответить

Номер ответа: 4
Автор ответа:
 Алмаз



Вопросов: 2
Ответов: 6
 Профиль | | #4 Добавлено: 14.10.10 20:26
Sharp пишет:
Очередь с приоритетами и после выполнения каждого действия совать в нее время выполнения следующего и его тип, после чего ставить таймер на оставшееся до следующего элемента в очереди время.

тяжко осмыслить, но вроде понял, что Вы хотели сказать, но действия должны производиться не зависимо друг от друга(два разных, не связанных между собой куска кода, причём может даже быть такое, что таймеры могут одновременно сработать)

Ответить

Номер ответа: 5
Автор ответа:
 Алмаз



Вопросов: 2
Ответов: 6
 Профиль | | #5 Добавлено: 14.10.10 20:42
Спасибо ребята, что быстро помогли!
Серёга, отдельное спасибо, вроде такая реализация удовлетворит мои потребности :D

Ответить

Номер ответа: 6
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #6
Добавлено: 15.10.10 03:41
В моем варианте действия и производятся независимо друг от друга, а таймер вообще всего один. Вариант в посте №2 предполагает, что можно вызывать таймер с частотой НОД периодов, но уже при небольшом количестве разных периодов нагрузка будет слишком велика.

Ответить

Номер ответа: 7
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #7 Добавлено: 15.10.10 08:15
В посте №2 таймер чрезвычайно неточен и не скор.

Ответить

Страница: 1 |

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



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