我正在编写一个程序以可视化不同的排序算法。我正在使用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();
}