private async void AlgorithmPanel_Paint(object sender, PaintEventArgs e) { Graphics graphics = algorithmPanel.CreateGraphics(); int maxWidth = algorithmPanel.Width / elementCount; //Width of each int maxHeight = algorithmPanel.Height; //Max Height of the panel elements = DataGeneration.GetData(maxHeight, elementCount, setModifier); for (int i = 0; i < elementCount; i++) { graphics.FillRectangle(new SolidBrush(Color.Black), i * maxWidth, maxHeight - elements[i], maxWidth, elements[i]); } algorithm.maxWidth = maxWidth; algorithm.maxHeight = maxHeight; algorithm.graphics = graphics; algorithm.elementCount = elements.Length; Thread.Sleep(500); await Task.Run(() => BeginSorting(graphics, maxWidth, maxHeight, elements)); SortComplete = true; algorithm.ShowCompletedDisplay(elements); }