Как остановить цикл

Я написал функцию while loop в функции, но не знаю, как ее остановить. Когда это не соответствует его окончательному условию, петля просто уходит навсегда. Как я могу остановить его?

просто введите свой код правильно:

Вам нужно понять, что оператор break в вашем примере выйдет из бесконечного цикла, который вы создали с помощью while True . Поэтому, когда условие прерывания равно True, программа выйдет из бесконечного цикла и продолжит следующий отложенный блок. Поскольку в коде нет следующего блока, функция заканчивается и ничего не возвращает. Поэтому я исправил ваш код, заменив инструкцию break оператором return .

Следуя вашей идее использовать бесконечный цикл, это лучший способ записать его:

Задача на сортировку : есть стопка блинов разного диаметра, их нужно отсортировать от самого большого до самого маленького. Блины переворачивать можно только лишь вставляя лопатку между блинов и переворачивая все что выше, то есть можно только переворачивать все вместе, что выше лопатки. Как мне кажется задача почти сделана, только проблема в том что если допустим программа отсортирует блины за 1 раз она дальше продолжает идти и переворачивает, то что уже не надо.

#include
#include
using namespace std;
int main()
<
srand(time(0));
int const n = 10;
int choose = 0, max = 0, k = 0, schet = 0, min = 0;
int mas[n];
for (int i = 0; i > mas[i];
>
max = mas[0];
for (int i = 0; i max)
max = mas[i];
>
for (int i = 0; i = i; j–)
<
if (mas[j] == max)
<
for (int y = j; y max)
max = mas[t];
>
>
>
>
for (int i = 0; i Голосование за лучший ответ

Есть кнопка которая при нажатии запускает действие, и при повторном нажатии останавливает

Читайте также:  Эвитест на овуляцию

Есть метод который выполняет работу в цикле и при повторном нажатии нужно его остановить:

Но это не работает, в режиме дебага смотрел, при нажатии кнопки выполняется метод public void Stop(bool stopWork), но в методе SomeWork() _stopWork все ровно ровняется false. Почему так? Как это исправить?

1 ответ 1

Пожалуй, вынесу комментарий vitidev в ответ. У Вас действительно при каждом клике создаётся новый объект класса Work . И работа запускается или останавливается каждый раз в другом экземпляре класса. Чтобы этого избежать, необходимо объявление var DoWork = new Work(); вынести за пределы обработчиков нажатий и сделать DoWork , например, свойством класса. Тогда каждый раз обращение будет идти к одному и тому же объекту.

И ещё добавление по правильности ООП лично от меня: не стоит передавать в метод Stop() булев аргумент. Название метода чётко говорит о том, что он должен остановить работу. Однако, если передать в него false , метод перестанет выполнять своё предназначение, что не есть хорошо.

Принимая во внимание оба замечания, ваш код можно переписать так:

Класс будет выглядеть так:

Всё ещё ищете ответ? Посмотрите другие вопросы с метками c# или задайте свой вопрос.

Похожие

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2019 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2019.11.5.35330

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Adblock detector