Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Зависание длинных циклов

30K
19 марта 2008 года
Zaal
10 / / 04.10.2007
Есть проблема:
При выполнении цикла, например For - Next более 200тыс раз программа не отвечает, форма не активна и ошибка со всей потерей данных
(даже с определением всех переменных Option Explicit) типа Long
5.9K
19 марта 2008 года
SPB-667
119 / / 23.06.2007
если время выполнения программы не очень важно, то попробуй поместить содержимое цикла в таймер, добавив лишь строку, наподобие:
i = i + 1 и условие остановки таймера, когда i = i(max)
251
19 марта 2008 года
SkyMаn
1.7K / / 31.07.2007
DoEvents в теле цикла - рулит.
9.3K
19 марта 2008 года
iridum
175 / / 26.08.2007
Цитата: SkyMаn
DoEvents в теле цикла - рулит.



Вообще если то что происходит в цикле критично или длительно по времени можно выполнять в отдельном потоке, что не критично в таймере.

251
19 марта 2008 года
SkyMаn
1.7K / / 31.07.2007
Цитата: iridum
Вообще если то что происходит в цикле критично или длительно по времени можно выполнять в отдельном потоке, что не критично в таймере.


Можно и так. DoEvents - тоже вполне приемлимо для сабжа.
На счет таймера, то можно АПИшкой заюзать SetTimer/KillTimer.
Что лучше - не скажу, поскольку не знаю, что вертится в автора в теле цикла.

30K
20 марта 2008 года
Zaal
10 / / 04.10.2007
DoEvents работает, но останавливает цикл например при удержании кнопки мыши, но остановка на прерывании мне не больно нужна. И вопрос к эксперту: что возвращает X = DoEvents [as Integer]
30K
20 марта 2008 года
Zaal
10 / / 04.10.2007
Цитата: SPB-667
если время выполнения программы не очень важно, то попробуй поместить содержимое цикла в таймер, добавив лишь строку, наподобие:
i = i + 1 и условие остановки таймера, когда i = i(max)



Это идея оказалась не плохой, только пришлось ещё добавить Exit Sub
кое где, ну для выполнения нескольких циклов сразу, по принципу "ядра" с приоритетом. Вообщем разобрался с таймером

251
20 марта 2008 года
SkyMаn
1.7K / / 31.07.2007
Доп. инфа: http://vbzero.narod.ru/chapter1/page_22.htm
А тут - http://www.codinghorror.com/blog/archives/000159.html - попытка доказать, что это зло. :)
30K
21 марта 2008 года
Zaal
10 / / 04.10.2007
Не могу запустить SetTimer
Public Declare Function SetTimer Lib "user32" Alias "SetTimer" (ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Ругается на lpTimerFunc
Как это записать правильно
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог