Подвисание программы

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

Подвисание программы

Сообщение _igor_ » 02.09.2007 (Вс) 14:11

Здравствуйте!

Дело вот в чем.
Прога связывается с .dll-кой
По циклу вызывается функция из этой .dll
Функия работает с текстовым файлом и это может занять достаточно времени
Так вот, когда эта функция работает, сама прога как бы подвисает, ProgressBar не двигается и в заголовке появляется надпись "Не отвечает"
Если дождаться до конца выполнения цикла то вся работа делается успешно, но ясно что такое подвисание не приемлемо для пользователя
Пробовал DoEvents:

Код: Выделить всё
for i = 0 to filescount
  myfunc(i)
  progressbar.value =  progressbar.value + 1
  DoEvents
Next


Не помогает

Еще пробовал заменить цикл For на Timer c интервалом 100 мс к примеру (в MSDN прочитал)

Код: Выделить всё
Sub Timer1_Timer()
  Static i As Long
 
  myfunc (i)
  ProgressBar1.Value = ProgressBar1.Value + 1
  DoEvents
  i = i + 1
  If filescount = i Then
    Timer1.Enabled = False
    Exit Sub
  End If
End Sub


Желаемого эффекта тоже не дает

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 02.09.2007 (Вс) 14:46

Код: Выделить всё
for i = 0 to filescount
  progressbar.value =  progressbar.value + 1
  DoEvents
  myfunc(i)
Next

_igor_
Новичок
Новичок
 
Сообщения: 47
Зарегистрирован: 25.08.2007 (Сб) 14:00

Сообщение _igor_ » 02.09.2007 (Вс) 15:55

Спасибо Konst_One, работает отлично

Возникла новая странность, работает из среды нормально, делаешь exe-шник, опять то же самое...:)

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 02.09.2007 (Вс) 17:52

сервис пак 6 для VB стоит?
что-то телепатия больше не работает у меня 8)
смотри внимательно свой код

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

Сообщение Хакер » 02.09.2007 (Вс) 18:47

А может не перекомпилировал ЕХЕ-шник? Например, перекомпилировал не туда.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

_igor_
Новичок
Новичок
 
Сообщения: 47
Зарегистрирован: 25.08.2007 (Сб) 14:00

Сообщение _igor_ » 03.09.2007 (Пн) 13:11

А может не перекомпилировал ЕХЕ-шник? Например, перекомпилировал не туда.

Да нет, туда же :)
сервис пак 6 для VB стоит?

неа, SP5

Думаю дело во внешней .dll или еще в чем т.к. оказалось что exe на пол-дороги вообще перестает делать работу, проц загружен на 1% и ничего не происходит, а когда из среды - на 52% загружен и вся работа делается до конца как надо.
Всем большое спасибо за советы, буду разбираться


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

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

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 52

    TopList  
cron