Экстренная остановка работы приложения по кнопке - C#

Узнай цену своей работы

Формулировка задачи:

Есть программа, в которой рисуется анимация c помощью PictureBox.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace risunki_1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            
        }

        private void pictureBox1_Click(object sender, EventArgs e)
        {
       
        }
 
        private void Start_Click(object sender, EventArgs e)
        {

            Random rand = new Random();

            Graphics g = pictureBox1.CreateGraphics();
 
            for (int cikl = 0; cikl < 1000; cikl++)
            {
                System.Threading.Thread.Sleep(3);
                for (int i = 0; i < 10; i++)
                {
                    int s = rand.Next(1, 50);
                    int j = rand.Next(1, 20);
                    int z = rand.Next(1, 10);
                    //g.DrawLine(new Pen(Brushes.Red, 4), new Point(10, 10), new Point(100, 100));
                    g.DrawRectangle(Pens.Red, 10 * s, 10 * j, 50, 50);
                    g.FillEllipse(Brushes.WhiteSmoke, 10*s, 10*j, 50, 50);

                }
            }
        }
 
        private void Clear_Click(object sender, EventArgs e)
        {
            pictureBox1.Image = null;
        }
 
        private void STOP_Click(object sender, EventArgs e)
        {
            this.Close();
          }
    }
}
Есть внутри цикл, который как раз-таки и отвечает за эту "анимацию".
 for (int cikl = 0; cikl < 1000; cikl++)
            {
                System.Threading.Thread.Sleep(3);
                for (int i = 0; i < 10; i++)
                {
                    int s = rand.Next(1, 50);
                    int j = rand.Next(1, 20);
                    int z = rand.Next(1, 10);
                    //g.DrawLine(new Pen(Brushes.Red, 4), new Point(10, 10), new Point(100, 100));
                    g.DrawRectangle(Pens.Red, 10 * s, 10 * j, 50, 50);
                    g.FillEllipse(Brushes.WhiteSmoke, 10*s, 10*j, 50, 50);

                }
            }
Мне нужно, чтобы данный цикл прерывался по нажатию кнопки. Если просто реализовать кнопку закрытия (как сделал я)
 private void STOP_Click(object sender, EventArgs e)
        {
            this.Close();
 
        }
То цикл сначала завершиться естественным путем (пройдет все i до 1000), а только потом уже выполнит команду кнопки. А мне хотелось бы реализовать безусловное прерывание. Думал о том, чтобы использовать оператор условия, который проверяет была ли нажата кнопка "Stop" внутри самого цикла, но так и не понял как реализовать сие. Да и как-то затратненько около тысячи раз проверять нажатие кнопки. Есть ли какое-либо элегантное решение? p.s. с C# только-только начал знакомиться. Не ругайтесь сильно на неумеху.

Решение задачи: «Экстренная остановка работы приложения по кнопке»

textual
Листинг программы
private void STOP_Click(object sender, EventArgs e)
        {
            flag = true;
            this.Close();
 
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.7 из 5
Похожие ответы