DoEvents

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Sergey-13
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 119
Зарегистрирован: 23.01.2004 (Пт) 16:02
Откуда: Саранск

DoEvents

Сообщение Sergey-13 » 30.01.2004 (Пт) 18:23

При использовании функции DoEvents не будет ли дольше выполняться программа?

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 30.01.2004 (Пт) 19:06

Выполняться будет дольше, но приятнее глазу.

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 30.01.2004 (Пт) 19:18

:D Ндя...

goto MSDN now!
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 30.01.2004 (Пт) 19:35

Будет.Для маленьких задач почти незаметно, но для больших надо ставить что типа:
Код: Выделить всё
for i= 1 to 100000
if i mod 1000 then doevents
...
next

или
Код: Выделить всё
for i= 1 to 100000
if getinputstate > 0 then doevents
...
next

иначе тормоза будут очевидны, а без doevents ваша програма будет не отвечать и тормозить другие программы.

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 30.01.2004 (Пт) 19:37

А вот это неверно. С doevents или без - производительность других программ по сути не страдает.
doevents лишь позволяет вашей программе продолжать работать, реагировать на действия юзера и т.д.
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 30.01.2004 (Пт) 19:42

Будет.Для маленьких задач почти незаметно, но для больших надо ставить что типа:
Код: Выделить всё
for i= 1 to 100000
if i mod 1000 then doevents
...
next

или
Код: Выделить всё
for i= 1 to 100000
if getinputstate > 0 then doevents
...
next

иначе тормоза будут очевидны, а без doevents ваша програма будет не отвечать и тормозить другие программы.

Q2W
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 745
Зарегистрирован: 31.01.2004 (Сб) 20:46
Откуда: Питер

Если DoEvents...

Сообщение Q2W » 31.01.2004 (Сб) 22:01

...даёт возможность проге только реагировать на юзера, то почему прога с DoEvents работает быстрее раз в 10...

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 01.02.2004 (Вс) 15:37

Не знаю ,но у меня при больших процесах програма з doevents тормозила.Вот например простой код:
Код: Выделить всё
dim i as long
dim j as long
for i= 1 to 10000000
i= j
doevents
next

Без doevents программа работала быстрее.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 01.02.2004 (Вс) 16:20

Ну да, это нормально...

Можно ещё использовать DoEvents не при каждом проходе большого цикла, скажем вот так:
Код: Выделить всё
If i \ 10=0 Then DoEvents

или
Код: Выделить всё
If Rnd*10>9 Then DoEvents


Хотя последний код что-то не очень рационален (не знаю, какой из них быстрее выполняется...)


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 9

    TopList