|
21 / 21 / 6
Регистрация: 09.01.2014
Сообщений: 118
|
|
Прерывание программы в процессе выполнения10.01.2014, 08:21. Показов 7801. Ответов 38
Метки нет (Все метки)
Доброго времени суток!
Подскажите, есть ли возможность прерывать программу во время выполнения? Т.е. у меня в программе есть цикл, который может выполняться много тысяч раз, сто выполнений цикла может происходить от 5 до 30 и более секунд, на каждых 100 циклах есть вывод промежуточных результатов. Если я по ним вижу, что эффективности я не получаю - я хочу перезапустить цикл с другими параметрами которые могу поменять не в коде, а до запуска цикла в самом интерфейсе программы, но остановить её могу только в компиляторе или диспетчере задач. Возможно ли как-то сделать так, чтоб программа не переставала реагировать на действия во время выполнения цикла?
0
|
|
| 10.01.2014, 08:21 | |
|
Ответы с готовыми решениями:
38
Динамическая линковка dll в процессе выполнения программы |
|
835 / 643 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
|
||
| 10.01.2014, 15:56 | ||
|
0
|
||
|
48 / 48 / 6
Регистрация: 24.12.2009
Сообщений: 532
|
|
| 10.01.2014, 15:58 | |
|
Куда он денется У Windows все козыря в руках
0
|
|
|
21 / 21 / 6
Регистрация: 09.01.2014
Сообщений: 118
|
||
| 10.01.2014, 16:00 [ТС] | ||
|
Программу в этот момент могу закрыть только в диспетчере задач или остановить выполнение в компиляторе. Больше никак.
0
|
||
|
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
| 10.01.2014, 16:03 | |
|
Если не консоль, то свои методы обработки событий есть. Но это уже другой раздел форума.
1
|
|
|
21 / 21 / 6
Регистрация: 09.01.2014
Сообщений: 118
|
|
| 10.01.2014, 16:05 [ТС] | |
|
alsav22, мне в С++ и WinAPI стучаться?
0
|
|
|
48 / 48 / 6
Регистрация: 24.12.2009
Сообщений: 532
|
|||||||
| 10.01.2014, 16:08 | |||||||
|
Я не понял у вас windows? вы wiinapi используйте?? Там же просто в обработку сообщений (цикл) написать типа
1
|
|||||||
|
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
| 10.01.2014, 16:13 | |
|
0
|
|
|
21 / 21 / 6
Регистрация: 09.01.2014
Сообщений: 118
|
|||
| 10.01.2014, 16:16 [ТС] | |||
|
Добавлено через 46 секунд
0
|
|||
|
48 / 48 / 6
Регистрация: 24.12.2009
Сообщений: 532
|
||
| 10.01.2014, 16:17 | ||
|
ну найдите в коде должно быть
1
|
||
|
835 / 643 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
|
|
| 10.01.2014, 16:21 | |
|
Обрабатываешь клик по кнопке стоп, дальше есть несколько вариантов:
1. Меняешь глобальный флаг, который проверяется в цикле. Если итерации тяжеловесные, то проверка флага на длительности работы почти не скажется. 2. Делаешь переменную цикла глобальной и меняешь её, чтобы цикл завершился. Поганый вариант. 3. Делаешь указатель на переменную цикла глобальным и через него меняешь. Тоже погано, но есть вероятность, что такой вариант, по сравнению с предыдущим, позволит компилятору нормально применить оптимизации. 4. Делаешь глобальный указатель на функцию или класс, содержаций функцию отмены текущего действия. Перед входом в цикл присваиваешь эту штуку, перед выходом сбрасываешь в null. Ну а вызов метода выполняет отмену вычислений каким-либо образом. Для того, чтобы это вообще работало, нужно поместить вычисления в отдельный поток. Либо вызывать DoEvents (не знаю, есть ли нечто подобное в Си++), чтобы продолжалась обработка событий формы. Ну и в случае с DoEvents флаг - наиболее логичное решение.
1
|
|
|
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||
| 10.01.2014, 16:22 | ||
|
1
|
||
|
835 / 643 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
|
|
| 10.01.2014, 16:23 | |
|
Оу.. Пока я вернулся и написал пост тут уже столько всего появилось...
ilja123, если выполнение вычислений блокирует форму, то они происходят в том же потоке и никакие события до их завершения не произойдут. Если это не изменить, то никакие обработчики не помогут.
1
|
|
|
21 / 21 / 6
Регистрация: 09.01.2014
Сообщений: 118
|
||||||
| 10.01.2014, 16:35 [ТС] | ||||||
|
ilja123, Всё что нашел касательно ВинАПИ выглядит так
В общем спасибо всем, кто отозвался. Через несколько дней сдам её и больше не вспомню даже. Не буду на этом терять своё время и отнимать ваше.
0
|
||||||
|
Фрилансер
3709 / 2082 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
|
||||||
| 10.01.2014, 16:52 | ||||||
|
Вставьте где-нибудь в цикл
0
|
||||||
|
835 / 643 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
|
|
| 10.01.2014, 17:10 | |
|
0
|
|
|
Фрилансер
3709 / 2082 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
|
|
| 11.01.2014, 18:30 | |
|
0
|
|
|
835 / 643 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
|
|
| 11.01.2014, 23:46 | |
|
0
|
|
|
Фрилансер
3709 / 2082 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
|
|
| 12.01.2014, 05:07 | |
|
Я так предполагаю, чтобы обработку исключений, которые не Exception, подсунуть тому же обработчику.
Но вообще-то этот код CBuilder делает сам, никому без особой просьбы не показывает и переписывает при изменениях без предупреждения. Так что что там и зачем простому смертному остается только догадываться.
0
|
|
|
48 / 48 / 6
Регистрация: 24.12.2009
Сообщений: 532
|
|
| 12.01.2014, 10:22 | |
|
А может и не магия совсем. Вы видели какой код создает визуальный редактор HTML
0
|
|
| 12.01.2014, 10:22 | |
|
Помогаю со студенческими работами здесь
39
Выделение памяти в процессе выполнения функции Прерывание программы по ESC C++ Можно ли "подменить" тип данных в процессе выполнения? Подключение библиотеки в процессе выполенния программы
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Сочетание глобально распределённой вычислительной мощности и инновационных. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|