Я пишу программу для визуализации различных алгоритмов сортировки. Я использую Winforms и использую краску формы даже для обновления графиков. У меня проблема в том, что я не могу просто написать метод, который сортирует массив, потому что форма обновляется только после завершения метода. Я пытался использовать таймер в качестве цикла for с глобальными переменными и вызывал Refresh (), но это делает мой код намного менее пригодным для повторного использования и выглядит некрасиво.
Как я могу исправить эту проблему?
Изменить: Чтобы было ясно, форма не блокируется, форма просто не перерисовывает себя.
Edit2: Здесь я сейчас вызываю мои методы сортировки. Мне пришлось заменить внешний цикл for, который вы обычно используете для сортировки массивов, глобальными переменными
private void Timer_Tick(object sender, EventArgs e)
{
switch (sortMethod)
{
case "Selection Sort":
color = Sort.SelectionSort(color, ref i);
break;
case "Bubble Sort":
color = Sort.BubbleSort(color, ref i);
break;
case "Cocktail Shaker Sort":
bool sorted = false;
color = Sort.CocktailShakerShort(color, ref sorted);
break;
case "Gnome Sort":
if (pos < color.Length)
{
color = Sort.GnomeSort(color, ref pos);
}
break;
default:
timer.Enabled = false;
break;
}
Invalidate();
}