Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
 Аватар для DoctorDMC
9 / 9 / 0
Регистрация: 16.01.2011
Сообщений: 29

Бесконечный цикл и его остановка по кнопке

31.10.2012, 19:13. Показов 3644. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер всем, есть приложение, в нем кнопка и "бесконечный" цикл, нужно чтобы по нажатию кнопки цикл останавливался.
Пример бесконечного цикла, в который изначально передается значение state равным start:
C++
1
2
3
4
5
void Method(String^ state)
{
while(state!="stop") //state - текущее состояние цикла, и соответственно если state=stop, то мы цикл останавливаем, параметр передает кнопка
Method2("C:\\"); //Method2, допустим собирает список всех файлов на диске С, и записывает в файл 
}
Пример кнопки:
C++
1
2
3
4
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
             state = "stop";
             Method(state);
         }
Проблема вот в чем: как только начинается "бесконечный" цикл форма виснет и не отвечает на запросы пользователя.
Прошу помощи!)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.10.2012, 19:13
Ответы с готовыми решениями:

Бесконечный цикл while и его примочки
Помогите понять условие, не надо писать код и готовую программу. cin<<p; ... здесь должно быть отделение p- string (набор символов) в...

Как реализовать бесконечный цикл While, но чтобы этот цикл не грузил процессор?
Допустим есть цикл: while (1) { ... } Как сделать так, чтобы бесконечный цикл не грузил процессор. Избавиться от...

Цикл do/while. Страница в браузере, уходит в бесконечный цикл и ничего не выводит.
Помогите, страница в браузере, как я понял, уходит в бесконечный цикл и ничего не выводит. Если переменные без ввода обозначить сразу, то...

5
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
31.10.2012, 19:28
В бесконечном цикле в конце итерации нужна вот эта
строка Application:: DoEvents();

http://msdn.microsoft.com/ru-r... 0).aspx#Y0
0
 Аватар для DoctorDMC
9 / 9 / 0
Регистрация: 16.01.2011
Сообщений: 29
31.10.2012, 19:35  [ТС]
пробовал, но цикл не останавливается, т.е. сначала да, цикл прекращается, потом после завершения события кнопки, цикл возобновляется. Если первый раз циклу state передается как stop, то после кнопки он вновь start
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
31.10.2012, 19:47
Для себя так бы делал
C++
1
2
3
4
5
6
private: bool stop = false;
 
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
             stop = !stop;
             Method();
         }
C++
1
2
3
4
5
6
7
8
9
10
void Method()
{
 while (stop)
                { 
 
////////////////////////////
Application:: DoEvents();
 
 }
}
1
 Аватар для DoctorDMC
9 / 9 / 0
Регистрация: 16.01.2011
Сообщений: 29
31.10.2012, 20:04  [ТС]
та же самая проблема, метод параметр stop (в вашем примере, в моем state), все равно после конца button1_Click задает ему значение true и все равно продолжает цикл, и кстати метод не видит stop т.к. метод объявлен раньше чем он
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
31.10.2012, 22:49
Цитата Сообщение от DoctorDMC Посмотреть сообщение
та же самая проблема, метод параметр stop (в вашем примере, в моем state), все равно после конца button1_Click задает ему значение true и все равно продолжает цикл, и кстати метод не видит stop т.к. метод объявлен раньше чем он
MrCold, написал то, что нужно. У меня работает так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
static bool stopScl = false;
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
Mettod();
}
void Mettod(){
 stopScl = !stopScl;
int countScl=0;
 while (stopScl){ 
this->richTextBox1->Text+=++countScl;
Application::DoEvents();
 }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.10.2012, 22:49
Помогаю со студенческими работами здесь

Остановка таймера по кнопке
Не хватает мозгов -_- private void Slaid_Click(object sender, EventArgs e) { timer1.Enabled = true; ...

Остановка цикла по кнопке
Вообщем столкнулся с такой проблемой. Есть кнопка1 которая запускает бесконечный цикл который должен останавливаться после нажатия кнопки2....

Почему цикл на при 1 уходит в бесконечный цикл?
#define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <stdio.h> #include <string.h> int main() { int x=0, y=0,...

Бесконечный итератор по нажатой кнопке (PyQt)
Есть кнопка from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * import sys import itertools ...

Остановка приложения с длительным процессом по кнопке
Есть приложение в С++Builder 6, делающее много расчетов, копирования файлов, отображающее всё это в ProgressBar'е. К сожалению, изначально...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru