Прогресс выполнения цикла - C#

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

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

Подскажите, вот есть цикл
private void ProcessedF()
        {
            int j = 0;
            for (int i = 0; i < 10; i++, j++)
 
            {
                System.Threading.Thread.Sleep(2000);
                BeginInvoke(new MethodInvoker(() => label1.Text = j.ToString()));
            }
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            System.Threading.Thread myThread = new System.Threading.Thread(ProcessedF);
            myThread.Start();
        }
Хочу сделать, чтобы при выполнении цикла, показывалось, выполнено 3 из 10 например. То есть показывать сколько прошел цикл и сколько осталось.

Решение задачи: «Прогресс выполнения цикла»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Threading.Tasks;
 
namespace WindowsFormsApplication7
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.Load += (delegate(object sender, EventArgs e)
            {
                label1.Text = string.Empty;
            });
 
            button1.Click += (delegate(object sender, EventArgs e)
            {
                Thread myThread = new Thread(new ThreadStart(delegate()
                    {
                        int j = 10;
                        for (int i = 0; i <= 10; i++)
                        {
                            Thread.Sleep(1000);
                            label1.Invoke((Action)delegate() 
                            {
                                string myString = string.Format("Выполнено {0} из {1}",
                                                  i.ToString(), j.ToString());
                                label1.Text = myString;
 
                            });
                        }
                        label1.Invoke((Action)delegate() { label1.Text = "Операция завершена!"; });
                    }));
                myThread.IsBackground = true;
                myThread.Start();
            });
        }
    }
}

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


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

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

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