Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут
закрыты.
Читайте
требования к создаваемым темам.
-
Snussi
-
- Продвинутый пользователь

-

-
- Сообщения: 151
- Зарегистрирован: 21.07.2004 (Ср) 18:08
- Откуда: Москва, Россия
-
Snussi » 01.12.2004 (Ср) 15:11
Итак, примерчик кода
- Код: Выделить всё
Private WeBusy as boolean ' Признак того, что ведется долгая и кропотливая операция над какими-то общими данными
private sub BigSub ' процедура, которая эти данные очень долго ковыряет
WeBusy=true
' Куча операций
WeBusy=False
end sub
private sub Timer1_Timer
' Срабатывание таймера
do while WeBusy=True
doevents
loop
' Коротенькая обработка данных
end sub
Собственно, вопрос в том, прерывается ли выполнение основной большой процедуры при срабатывании таймера? Или она будет потихоньку выполнятся?
-
alibek
-
- Большой Человек

-
-
- Сообщения: 14205
- Зарегистрирован: 19.04.2002 (Пт) 11:40
- Откуда: Russia
alibek » 01.12.2004 (Ср) 15:27
Возможно, но я обычно делаю несколько по другому.
- Код: Выделить всё
Private fBusy As Boolean, fCancel As Boolean
...
Sub LoadBigChunk()
Dim ...
If fBusy Then Exit Sub
fBusy = True
fCancel = False
Do Until ...
...
DoEvents
If fCancel Then Exit Do
Loop
fBusy = False
End Sub
...
Private Sub cmdLoadData_Click()
If fBusy Then Exit Sub
Call LoadBigChunk()
If fCancel Then MsgBox "Cancelled!"
End Sub
Private Sub cmdInfo_Click()
MsgBox ...
End Sub
Private Sub cmdCancel_Click()
fCancel = True
End Sub
Lasciate ogni speranza, voi ch'entrate.
Вернуться в Visual Basic 1–6
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 32