![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
"Подвисание" компьютера при работе рекурсии и цикла...
mufan © (2007-11-10 15:45:00)Доброго времени суток!
Имеем:
1. Рекурсивную функцию... внутри функции цикл for...
2. Все точки выхода отлажены... При выхове этой функции результат всегда достигается!
Вообщем логически механиз отлажен!
Что делаем:
1. Ставим, например, вызов этой функции на buttonclick.
2. Как известно, при наведении на кнопку курсор - стрелка (по дефолту)
3. жмем кнопку - вызывается функция
Проблемы:
1. Я знаю сколько всего раз программа окажется внутри цикла, перед тем как вернется в buttonclick. Это количество раз пусть будет 540000000 (540 млн.)... Я определяю время до вызова, время после вызова... Разница на моем компе 13 секунд...
2. Так вот эти 13 секунд прога "висит":
- мышь двигается, но курсор как был стрелкой (после кнопки), так и остается хоть куда его наводи
- щелчок по любому месту окна приводит к появлению в заголовке "... (Не отвечает)"
3. Через 13 сек. прогу "отпускает"!
+
я ставлю в цикле еще увеличивать позицию прогрессбара... тоже не работает...
Вопросы:
1. Как избежать подобного "зависания"...??? Например, можно панель на передний план "модально" вывести панель... Там написать "Ждите... Для прекращения нажмите Esc"! Как?
2. Как отлавливать в такой ситуации нажатие Esc и как прекратить операцию?
3. Как заставить ProgressBar все-таки отображать полоску...
Спасибо! =)
mufan (2007-11-10 15:47:00) [1]
> я ставлю в цикле еще увеличивать позицию прогрессбара...
> тоже не работает...
максимальное количество я знаю... а текущее инкрементируется в глобальной переменной...
Anatoly Podgoretsky (2007-11-10 15:46:00) [2]> mufan (10.11.2007 15:45:00) [0]
Application.ProcessMessages