powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Есть ли альтернатива DoEvents?
9 сообщений из 9, страница 1 из 1
Есть ли альтернатива DoEvents?
    #38180416
Bobax012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть ли альтернатива DoEvents?
Если да, то какая и как ее можно использовать? Хотя бы пример.
...
Рейтинг: 0 / 0
Есть ли альтернатива DoEvents?
    #38180434
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем альтернатива, которая делает абсолютно то же самое? А если не то же самое, тогда начните с того, чем именно не устраивает doevents.

Зы: посмотрите примеры использования sleep
...
Рейтинг: 0 / 0
Есть ли альтернатива DoEvents?
    #38181491
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bobax012,

Код взят с родственного форума, недавно обсуждалось там.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
"
Option Explicit

Public Type POINTAPI
    X As Long
    y As Long
End Type

Private Type Msg
    hwnd As Long
    Message As Long
    wParam As Long
    lParam As Long
    Time As Long
    pt As POINTAPI
End Type

Private Const PM_NOREMOVE = 0
Private Const PM_REMOVE = 1

Private Declare Function TranslateMessage Lib "user32" (lpMsg As Msg) As Long
Private Declare Function DispatchMessage Lib "user32" Alias "DispatchMessageA" (lpMsg As Msg) As Long
Private Declare Function PeekMessage Lib "user32" Alias "PeekMessageA" (lpMsg As Msg, ByVal hwnd As Long, ByVal wMsgFilterMin As Long, ByVal wMsgFilterMax As Long, ByVal wRemoveMsg As Long) As Long
'The API_DoEvents is faster then VB DoEvents. The differnce may be much higher if there was more complicated task.

'It's always good to have a replacement for standard VB functions.
Public Sub API_DoEvents()
    Dim wMsg As Msg

    While PeekMessage(wMsg, 0, 0, 0, PM_REMOVE)
        Call TranslateMessage(wMsg)
        Call DispatchMessage(wMsg)
    Wend
End Sub
...
Рейтинг: 0 / 0
Есть ли альтернатива DoEvents?
    #38181616
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
5.
    While PeekMessage(wMsg, 0, 0, 0, PM_REMOVE)
        Call TranslateMessage(wMsg)
        Call DispatchMessage(wMsg)
        DoEvents
    Wend
...
Рейтинг: 0 / 0
Есть ли альтернатива DoEvents?
    #38182098
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

А зачем DoEvents? это лишнее )
...
Рейтинг: 0 / 0
Есть ли альтернатива DoEvents?
    #38182249
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VSVLADThe API_DoEvents is faster then VB DoEvents
Быстрее - не то слово :) В 100 раз!!!
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Sub test()
Const N = 100000
Dim t!, i&
t = Timer
For i = 1 To N
    DoEvents
Next
Debug.Print "DoEvents", Timer - t
t = Timer
For i = 1 To N
    API_DoEvents
Next
Debug.Print "API_DoEvents", Timer - t
End Sub


Код: plaintext
1.
DoEvents       10,73608 
API_DoEvents   9,985352E-02

Почему так? Может, DoEvents делает еще что-то... полезное? ;)
...
Рейтинг: 0 / 0
Есть ли альтернатива DoEvents?
    #38182463
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VSVLADAntonariy,

А зачем DoEvents? это лишнее )Это была шутка. :)
...
Рейтинг: 0 / 0
Есть ли альтернатива DoEvents?
    #38182467
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КазанскийVSVLADThe API_DoEvents is faster then VB DoEvents
Быстрее - не то слово :) В 100 раз!!!
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Sub test()
Const N = 100000
Dim t!, i&
t = Timer
For i = 1 To N
    DoEvents
Next
Debug.Print "DoEvents", Timer - t
t = Timer
For i = 1 To N
    API_DoEvents
Next
Debug.Print "API_DoEvents", Timer - t
End Sub


Код: plaintext
1.
DoEvents       10,73608 
API_DoEvents   9,985352E-02

Почему так? Может, DoEvents делает еще что-то... полезное? ;)попробуй сделать цикл подлиннее, воткнуть его в форму и поработать в ней с обычным doevents и апишным. Сам бы попробовал, но VB6 у меня уже нет под рукой.
...
Рейтинг: 0 / 0
Есть ли альтернатива DoEvents?
    #38182495
kiv-1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю как у Вас, но у меня существенно Апи работает быстрее
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Sub test()
Const N = 3000000
Dim t!, i&
t = Timer
For i = 1 To N
    DoEvents
Next
Debug.Print "DoEvents", Timer - t
t = Timer
For i = 1 To N
    API_DoEvents
Next
Debug.Print "API_DoEvents", Timer - t
End Sub



авторDoEvents 0,453125
API_DoEvents 0,09375

DoEvents 0,390625
API_DoEvents 0,09375

DoEvents 0,421875
API_DoEvents 0,078125

DoEvents 0,4375
API_DoEvents 0,078125

DoEvents 0,390625
API_DoEvents 0,09375

Тут увеличил на порядок:
DoEvents 4,3125
API_DoEvents 0,890625
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Есть ли альтернатива DoEvents?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]