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

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

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

Семафоры попробуй как это поможет?
...
Рейтинг: 0 / 0
05.06.2012, 12:21
    #37825660
TpaBka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ничего не делать
Кинь таймер и проверяй состояние в нем с интервалом 500
...
Рейтинг: 0 / 0
05.06.2012, 13:10
    #37825790
BelowZeroTooCold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ничего не делать
TpaBkaКинь таймер и проверяй состояние в нем с интервалом 500 просто есть много мест, где нужно ждать загрузки... сделал так:
Код: vbnet
1.
2.
3.
4.
5.
'первая процедура после окончания работы вызывает таймер
'таймер проверяет, когда загрузится страница, и вызвает вторую проц
'вторая процедура после окончания работы вызывает второй таймер
'второй таймер проверяет, когда загрузится страница, и вызывает третью проц
'и тд....
...
Рейтинг: 0 / 0
05.06.2012, 21:40
    #37826717
Андрей159
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ничего не делать
нужен: один таймер. переменная для отсчета, переменная желаемого состояния и условия. всё в одном таймере
делай для себя отображения статусов в своем информере типа Label1.Caption = ТекущееСостояниеТаймера:Label2.Caption = ТекущийРежим и т.д. В рабочем состоянии программы потом удалишь.
...
Рейтинг: 0 / 0
06.06.2012, 15:47
    #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
06.06.2012, 15:52
    #37827871
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ничего не делать
Нет, кажется с WaitMessage так делать не надо. Сорри.
...
Рейтинг: 0 / 0
06.06.2012, 19:16
    #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
06.06.2012, 19:31
    #37828330
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ничего не делать
ждать в vb6,

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

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

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

Посмотри

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


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


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

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


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


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


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