Нарисовать фигуры из разных потоков - 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);
}
}
}
}