Нарисовать фигуры из разных потоков - C#

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

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

Создать Windows приложение. Четыре потока обращаются к статическому методу класса, для рисования линии. Метод принимает координаты начала и конца линии. Каждый поток должен с помощью этого объекта нарисовать замкнутую фигуру, каждый в своей области экрана

Решение задачи: «Нарисовать фигуры из разных потоков»

textual
Листинг программы
public class Program
{
    [STAThread]
    private static void Main()
    {
        Application.Run(new MyForm());
    }
 
    private class MyForm : Form
    {
        public MyForm()
        {
            Text = "Форма";
            ClientSize = new Size(400, 400);
            StartPosition = FormStartPosition.CenterScreen;
            Load += OnLoad;
        }
 
        private void OnLoad(object sender, EventArgs eventArgs)
        {
            BackgroundImage = new Bitmap(ClientSize.Width, ClientSize.Height);
            using (Graphics graphics = Graphics.FromImage(BackgroundImage))
            {
                Task[] tasks =
                {
                    Task.Run(() => Draw(graphics, new Point(0, 200), new Point(200, 0))),
                    Task.Run(() => Draw(graphics, new Point(200, 0), new Point(400, 200))),
                    Task.Run(() => Draw(graphics, new Point(400, 200), new Point(200, 400))),
                    Task.Run(() => Draw(graphics, new Point(200, 400), new Point(0, 200)))
                };
 
                Task.WaitAll(tasks);
            }
        }
 
        private static void Draw(Graphics graphics, Point start, Point end)
        {
            lock (graphics)
            {
                graphics.DrawLine(Pens.Black, start, end);
            }
        }
    }
}

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

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