我是半新的C#,我决定尝试编码15个谜题。这是我过去在Delphi(Paschal)中使用16个按钮,16个按钮点击事件以及大量if语句完成的练习。这一次,我以编程方式创建了按钮,并且我使用了所有按钮都使用的单个buttonClick方法,并且它设置为检查相邻按钮,并在空白按钮的位置更改按钮的文本。这我没有问题。但是,当试图创建一个加扰器按钮时,我们在Delphi中的做法是创建一个循环10,000次的外观。在循环内我们随机选取一个数字(0-15)并为该按钮调用Click方法。显然不是所有的点击都会注册,但是这样做10,00次就足以扰乱这个难题。这在Delphi中需要大约1秒钟才能完成。在C#中,我很难让代码快速执行。 Button.PerformClick操作似乎比我预期的要慢得多。有什么我做错了吗?我感谢任何帮助。谢谢!在C编程15个谜题#
这里是加扰按钮的代码。
void scramble_Click(object sender, MouseEventArgs e)
{
for (int i = 0; i < 1000; i++)
{
int temp = rand.Next(16);
int div = temp % 4;
int rem = temp/4;
buttonClick(puzzle[div, rem], new EventArgs());
Refresh();
}
}
按钮是在4×4网格,并通过随机数模4被访问时,作为x cooridate和随机数intDiv 4为y坐标。如果您想了解其他信息,请告诉我!再次感谢!
你说buttonClick方法很慢....但你没有在你的文章中包含该代码。非常重要。你有没有执行任何数量的分析?什么阻止你运行一个分析器或使用简单的'StopWatch'来识别瓶颈?然后您可以回来问问如何根据需要进行优化。另外,要知道'Refresh'使得它被调用的整个控件失效,所以在这里重绘至少1000次。 –