Возможна ли такая псевдомультизадачность?

Программирование на 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

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

Сейчас этот форум просматривают: AhrefsBot, SemrushBot, The trick и гости: 24

    TopList