Тонкости блокирующего MsgBox

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Source
Постоялец
Постоялец
 
Сообщения: 351
Зарегистрирован: 04.09.2007 (Вт) 11:21

Тонкости блокирующего MsgBox

Сообщение Source » 26.10.2007 (Пт) 16:32

Вылетает ошибка. Анализ программы показал, что вероятно при вызове MsgBox происходит неполное блокирование (не моментальное), т.е. блокируется работа вызвавшей процедуры и происходит выполнение процедуры другого события. Либо же после завершения работы MsgBox сначала происходит выполнение процедуры другого события, а затем выполнение кода после MsgBox. Возможно ли такое? Ошибка непостоянна, не могу отловить. Видел всего 1 раз, когда только поставил MsgBox в обработчик таймера.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 26.10.2007 (Пт) 21:36

Source
Не происходит никаких блокирований процедур. Нет такого - блокирования процедур.


Видел всего 1 раз, когда только поставил MsgBox в обработчик таймера.

Это меняет дело :)

Таймер не будет больше срабатывать, пока не произойдёт возврат из обработчика предыдущего события. MsgBox здесь не причём.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Source
Постоялец
Постоялец
 
Сообщения: 351
Зарегистрирован: 04.09.2007 (Вт) 11:21

Сообщение Source » 26.10.2007 (Пт) 22:29

я не то имел ввиду. Какой-нить обработчик (например, сокета DataArrival) может сработать во время вызова MsgBox (или сразу опосля вызова) в обработчике таймера? Схематично так:

Private Sub Timer1_Timer()

'здесь срабатывает DataArrival?
MsgBox 1
'здесь срабатывает DataArrival?
a=a+1 'выполняется после DataArrival

End Sub

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 26.10.2007 (Пт) 22:52

При вызове MSGBOX ... событи принимаются .... но не обрабатываются ... потом ... как закроешь MSGBOX и завершишь процедуру ...в которой в настоящий момент находишься ....

получишь все остальные события (из очереди, в которую они встают для обработки)

С Уважением,
Сергей
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 71

    TopList  
cron