Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 | 2 |

 

  Вопрос: Пауза Добавлено: 21.01.11 01:13  

Автор вопроса:  Nezhniy | Web-сайт: www.helpim.ru | ICQ: 419841508 
 Function starting()
        vopros0()'1е действие
        vopros1()'2е действие
        vopros2()'и так далее
        vopros3()
        vopros4()
        Form2.Show()
    End Function

Как делать паузы в секундах между действиями кода не останавливая поток , как это Sleep делает , можно это как то через таймер сделать ?

Ответить

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

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



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #1 Добавлено: 21.01.11 11:43
как сделать паузу не делая паузы? вдумайся в собственный вопрос, может, вес таки остановить поток?

Ответить

Номер ответа: 2
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #2
Добавлено: 21.01.11 12:00
  1.  
  2. Function SoftSleep (Time As Long) 'Время в миллисекундах
  3. t = Timer
  4. While (Timer - t) * 1000 < Time
  5. DoEvents
  6. Sleep(1)
  7. Loop
  8. End Function

Ответить

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



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #3 Добавлено: 21.01.11 12:12
VBDUnit, ты останавливал поток! И, мало того, использовал медленную и бажную функцию DoEvents. А что, если последняя итерация цикла, прямо на каком нибудь событии, в момент DoEvents, займет много времени? функция (странно, что не процедура, ибо возвращаемых значений я не вижу) SoftSleep порработает нагло больше, чем ей было указано в параметре! Что тогда?

Ответить

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



ICQ: 419841508 

Вопросов: 9
Ответов: 100
 Web-сайт: www.helpim.ru
 Профиль | | #4
Добавлено: 21.01.11 14:13
Я имел ввиду что почему то когда выполняется sleep у меня не появляются картинки хотя в функции указано pict.visible=true , просто как будто не успевают появиться и прога зависает на указаное время.

Ответить

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



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #5 Добавлено: 21.01.11 14:27
Где не появляются, какие картинки, и что такое pict?

Ответить

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



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #6 Добавлено: 21.01.11 14:29
vopros0()'1е действие
        vopros1()'2е действие
        vopros2()'и так далее
Кстати, а почему бы не Question(i) ?

Ответить

Номер ответа: 7
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #7
Добавлено: 21.01.11 15:35
AgentFire пишет:
VBDUnit, ты останавливал поток! И, мало того, использовал медленную и бажную функцию DoEvents. А что, если последняя итерация цикла, прямо на каком нибудь событии, в момент DoEvents, займет много времени? функция (странно, что не процедура, ибо возвращаемых значений я не вижу) SoftSleep порработает нагло больше, чем ей было указано в параметре! Что тогда?

Бида... особенно когда отображаешь картинки.

Ответить

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



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #8 Добавлено: 21.01.11 15:48
V&#946;&#208;U&#951;&#236;t пишет:
Бида ...
Зачем, в таком случае, ты привел пример, который сам же назвал полным ахтунгом?

Ответить

Номер ответа: 9
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #9
Добавлено: 21.01.11 16:27
Полным ахтунгом назвал его ты, а мой пример вполне годится для решения задачи, которую решает автор. Впрочем, то, что написано справа от слова "Бида..." помогает уловить сарказм. Но, видимо, не всем.
uNicO* пишет:
Я имел ввиду что почему то когда выполняется sleep у меня не появляются картинки хотя в функции указано pict.visible=true , просто как будто не успевают появиться и прога зависает на указаное время.

Попробуй мой пример, на автора предыдущего поста не обращай внимания - он просто немного комплексует из-за небольшой компетенции (см. пост 5) и пытается самоутвердиться.

Ответить

Номер ответа: 10
Автор ответа:
 Nezhniy



ICQ: 419841508 

Вопросов: 9
Ответов: 100
 Web-сайт: www.helpim.ru
 Профиль | | #10
Добавлено: 21.01.11 17:47
V&#946;&#208;U&#951;&#236;t, твой код в vb6 ,я в vb.net, но не суть , напиши на примере , пожалуйста, vopros0() vopros1() , как между этими 2мя процедурами сделать паузу в 5 секунд , при том чтоб все кантинки в vopros0 отобразились(у меня в процедурах стоит перемешивание картинок на рандом), то есть перемешались картинки - отобразились , 5 секунд на них смотришь , потом vopros1 .

Ответить

Номер ответа: 11
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #11
Добавлено: 21.01.11 18:07
uNicO* пишет:
твой код в vb6 ,я в vb.net, но не суть

Нет,нет, тут то как раз и суть. В VB6 потков нет (точнее есть, но это отдельное очень занимательное и веселое занятие), поэтому в легких случаях обходятся дуэвентсами и всем остальным, чтобы не подвисало. Но именно когда "чтобы не повисало", то есть неточности во времени простительны. Если все сложнее - то выкручиваются (или пересаживаются на дотнет и пишут топики про то, что vb6 говно). В дотнете с потоками работать можно, причем абсолютно спокойно. Но потоки, они и в дотнете потоки - это отдельная тема, в твоем случае можно обойтись жутко неоптимальным, ахтуновским, ужастным и нубским, но очень простым путем. Если хочешь, можешь на досуге поразбирать потоки. Если вкраце - потоки нужны, чтобы параллельно выполнять несколько функций.

Тебе проще так:
  1.  
  2.  Function starting()
  3.         vopros0()'1е действие
  4.         SoftSleep (5)
  5.         vopros1()'2е действие
  6.  
  7.         vopros2()'и так далее
  8.         vopros3()
  9.         vopros4()
  10.         Form2.Show()
  11.     End Function
  12. Function SoftSleep (Time As Long) 'Время в миллисекундах
  13. Dim t As DateTime = DateTime.Now
  14. While (DateTime.Now - t).TotalMilliseconds < Time
  15. Applcation.DoEvents()
  16. Thread.Sleep(1)
  17. End While
  18. End Function

Ответить

Номер ответа: 12
Автор ответа:
 Nezhniy



ICQ: 419841508 

Вопросов: 9
Ответов: 100
 Web-сайт: www.helpim.ru
 Профиль | | #12
Добавлено: 21.01.11 18:18
V&#946;&#208;U&#951;&#236;t , огроменное спс, работает )) единственный человек кто разжевал все )

Ответить

Номер ответа: 13
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #13 Добавлено: 21.01.11 18:20
говнокод
олсо, привязываться к DateTime.Now нельзя, потому что в этот момент может произойти переход на летнее/зимнее время, смена часового пояса или синхронизация часов, отстающих на несколко минут от интернет-времени, и работа функции станет непредсказуемой. DateTime.UtcNow получше, но тоже не то. Можно привязываться к Environment.TickCount.

Если пишешь на .NET, запускай отдельный поток и в нем свободно можешь вызывать System.Threading.Thread.Sleep на нужное тебе время. UI блокироваться не будет. Для того чтоб обращаться к UI из этого потока, используется Control.Invoke/Control.BeginInvoke, сложного здесь ничего нет.

Ответить

Номер ответа: 14
Автор ответа:
 Nezhniy



ICQ: 419841508 

Вопросов: 9
Ответов: 100
 Web-сайт: www.helpim.ru
 Профиль | | #14
Добавлено: 21.01.11 18:21
объясни , пожалуйста, почему этот способ нубский ?

Ответить

Номер ответа: 15
Автор ответа:
 Nezhniy



ICQ: 419841508 

Вопросов: 9
Ответов: 100
 Web-сайт: www.helpim.ru
 Профиль | | #15
Добавлено: 21.01.11 18:21
пока писал , написали ответ)

Ответить

Страница: 1 | 2 |

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



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