powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ничего не делать
14 сообщений из 14, страница 1 из 1
ничего не делать
    #37825361
BelowZeroTooCold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как "ничего не делать" во время исполнения кода? т.е. грузится иннет-страница. я жду её загрузки так:
Код: vbnet
1.
2.
3.
Do Until WebBrowser1.ReadyState = READYSTATE_COMPLETE 'ждём нажатия кнопки
DoEvents
Loop

в итоге код отрабатывает впустую, загрузка ЦП на 100%, вентили и процессор гудят, обжигая мне руки
если юзать wait(или слип, не помню), то, кажется, весь код тормозится. как правильно ждать какое-то событие?
...
Рейтинг: 0 / 0
ничего не делать
    #37825373
Семафор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BelowZeroTooCold,

Семафоры попробуй
...
Рейтинг: 0 / 0
ничего не делать
    #37825448
BelowZeroTooCold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СемафорBelowZeroTooCold,

Семафоры попробуй как это поможет?
...
Рейтинг: 0 / 0
ничего не делать
    #37825660
TpaBka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кинь таймер и проверяй состояние в нем с интервалом 500
...
Рейтинг: 0 / 0
ничего не делать
    #37825790
BelowZeroTooCold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TpaBkaКинь таймер и проверяй состояние в нем с интервалом 500 просто есть много мест, где нужно ждать загрузки... сделал так:
Код: vbnet
1.
2.
3.
4.
5.
'первая процедура после окончания работы вызывает таймер
'таймер проверяет, когда загрузится страница, и вызвает вторую проц
'вторая процедура после окончания работы вызывает второй таймер
'второй таймер проверяет, когда загрузится страница, и вызывает третью проц
'и тд....
...
Рейтинг: 0 / 0
ничего не делать
    #37826717
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нужен: один таймер. переменная для отсчета, переменная желаемого состояния и условия. всё в одном таймере
делай для себя отображения статусов в своем информере типа Label1.Caption = ТекущееСостояниеТаймера:Label2.Caption = ТекущийРежим и т.д. В рабочем состоянии программы потом удалишь.
...
Рейтинг: 0 / 0
ничего не делать
    #37827854
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может быть пример с текст боксом поможет?

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Option Explicit

Private Declare Function WaitMessage Lib "user32" () As Long
Private mblnCondition As Boolean
    

Private Sub CommandButton1_Click()

' the modified doevents loop
    Do While Not mblnCondition ' < mblnCondition is your condition flag, module-level variable
        WaitMessage  ' any message: mousemove, click, keybd, timer, just about anything
        DoEvents
    Loop

    
    MsgBox "Box Changed"

End Sub

Private Sub TextBox1_Change()
    mblnCondition = True
End Sub
...
Рейтинг: 0 / 0
ничего не делать
    #37827871
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, кажется с WaitMessage так делать не надо. Сорри.
...
Рейтинг: 0 / 0
ничего не делать
    #37828316
ждать в vb6
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
создать форму WaitForm
вызвать
Код: vbnet
1.
2.
3.
dim objWaitForm as WaitForm
set objWaitForm = new WaitForm
objWaitForm.show vbmodal



на vb6 работает
на vba не пробовал
(формы vb6 и vba немного отличаются)

преимущества
1. прога будет ждать пока событие которое ждем не наступит
и после вызова функции ожидания
мы можем писать код который будет выполняться когда дождались
иначе пришлось бы думать о том как вызвать код
который должен выполниться после функции ожидания когда дождались

2. все окна будут заблокированы
и пользователь не сможет ждать на кнопки


если не хочется чтобы форма была видна
достаточно показать ее в точке с отрицательными начальными координатами
objWaitForm.left = -1000
objWaitForm.top = -1000


while true DoEvents
использовать просто нельзя
тк 100% работы на процессор
и кроме того события от WebBrowser
просто не приходят
или приходят но не все
или не тогда когда надо

использовать winapi функцию ожидания нельзя
по-крайней мере у меня не получилось
...
Рейтинг: 0 / 0
ничего не делать
    #37828330
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ждать в vb6,

А что это у тебя за класс такой WaitForm в VB6? Поделился бы.
...
Рейтинг: 0 / 0
ничего не делать
    #37828471
BelowZeroTooCold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ждать в vb6,

спс, но как-то сложновато для мну) я использовал обычный таймер, который через заданный промежуток времени проверяет, созданы ли все условия для продолжения работы.
кстати, почему ты до сих пор не зарегистрировался? твои знания будут большим вкладом в развитии программирования на форуме, и тебе помогут если что
...
Рейтинг: 0 / 0
ничего не делать
    #37828689
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ждать в vb6...
while true DoEvents
использовать просто нельзя
тк 100% работы на процессор
...

Снова не понял, а что ты хочешь, чтобы половина работы была на вентилятор???
...
Рейтинг: 0 / 0
ничего не делать
    #37828693
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZeroTooCold,

Посмотри

listener
...
Рейтинг: 0 / 0
ничего не делать
    #37829393
ждать в vb6
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если написать
Do While True
Loop
то проц занят на 100% что плохо
нам надо что проц был занят на 0% в ожидании


авторА что это у тебя за класс такой WaitForm в VB6? Поделился бы.


WaitForm это просто форма
если она будет видна когда ожидание происходит то
можно на нее помесить сообщение "Ожидание" например
или еще какие-то контролы например "Прервать Ожидание"
и тд

если написать
objWaitForm.Show vbModal
то прога будет ждать пока форма не будет закрыта
те получили функцию ожидания


что чтобы программно выйти из ожидания
надо просто закрыть форму WaitForm
например вызвав objWaitForm.Hide


проверить что условие по которому надо завершить ожидание выполнено
можно либо по таймеру те через определенный промежуток проверять условие
либо по событию например IE.NavigateComplete
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ничего не делать
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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