Каким образом можно заставить программу отрисовывать объекты по порядку через определённый интервал времени?

Допустим мы имеем в первом файле такое определение:

using System.Windows.Media;
using System.Windows.Shapes;

namespace Visual
{
    public class TPoint
    {

        // Coords of all objects in this project will be indicated by the upper left edge
        private Rectangle rectangle;
        private Brush pointColor;
        private int regardingPointSize;
        private int pointCoordX;
        private int pointCoordY;

        public TPoint(int _x, int _y, int _size, Brush _color)
        {
            pointColor = _color;
            pointCoordX = _x * TBasicConstants.getBasicSizeOfBlock();
            pointCoordY = _y * TBasicConstants.getBasicSizeOfBlock();
            regardingPointSize = _size * TBasicConstants.getBasicSizeOfBlock();

            rectangle = new Rectangle
            {

                Fill = pointColor,
                Width = regardingPointSize,
                Height = regardingPointSize
            };
        }

        public int getXCoord ()
        {
            return pointCoordX;
        }
        public int getYCoord ()
        {
            return pointCoordY;
        }
        public Rectangle getPoint()
        {
            return rectangle;
        }

    }
}

Во втором, где описана мельчайшая константа :

namespace Visual
{
    class TBasicConstants
    {
        private const int basicSizeOfBlock = 15;

        public static int getBasicSizeOfBlock()
        {
            return basicSizeOfBlock;
        }
    }
}

И в третьем где отрисовываются элементы:

using System.Threading;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;

namespace Visual
{
    /// <summary>
    /// Логика взаимодействия для MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {

        public MainWindow()
        {
            InitializeComponent();

            for (int i = 0; i <=5; i++)
            {
                TPoint point = new TPoint(5, i, 1, Brushes.Red);
                drawTPointElement(point);
            }
        }

        public void drawTPointElement(TPoint _rectangle)
        {
            Canvas.SetLeft(_rectangle.getPoint(), _rectangle.getXCoord());
            Canvas.SetTop(_rectangle.getPoint(), _rectangle.getYCoord());
            Thread.Sleep(1000);
            mainCanvas.Children.Add(_rectangle.getPoint());
        }

    }
}

Так вот, какие есть способы сделать так, чтобы элементы в цикле выводились по порядку через определённый интервал времени? А не так как получилось: программа "спит" одну секунду после инициализации каждого объекта, а потом показывает все сразу (то есть программа перед запуском из за Thread.sleep висит 'количество итераций в цикле for * число указанное в thread.sleep' секунд)


Ответы (0 шт):