Экстренная остановка работы приложения по кнопке - C#
Формулировка задачи:
Есть программа, в которой рисуется анимация c помощью PictureBox.
Есть внутри цикл, который как раз-таки и отвечает за эту "анимацию".
Мне нужно, чтобы данный цикл прерывался по нажатию кнопки.
Если просто реализовать кнопку закрытия (как сделал я)
То цикл сначала завершиться естественным путем (пройдет все i до 1000), а только потом уже выполнит команду кнопки. А мне хотелось бы реализовать безусловное прерывание. Думал о том, чтобы использовать оператор условия, который проверяет была ли нажата кнопка "Stop" внутри самого цикла, но так и не понял как реализовать сие. Да и как-то затратненько около тысячи раз проверять нажатие кнопки. Есть ли какое-либо элегантное решение?
p.s. с C# только-только начал знакомиться. Не ругайтесь сильно на неумеху.
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(); }
Решение задачи: «Экстренная остановка работы приложения по кнопке»
textual
Листинг программы
private void STOP_Click(object sender, EventArgs e) { flag = true; this.Close(); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д