我尝试制作简单的蛮力算法,可以正常工作,但我正在观看此视频
http://www.youtube.com/watch?v=v2xwficgRYk&feature=relmfu
(时间10:30)正如您在textbox2中的可能性所见,但是在我的程序中。我创建了1323作为密码,然后当我单击蛮力时,我等待了5秒,在textbox2中得到了99999,在textbox3中得到了1323.为什么我看不到像视频中一样在textbox2中流动数字?
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int a, b;
private void button1_Click(object sender, EventArgs e)
{
a = Convert.ToInt16(textBox1.Text);
}
private void button2_Click_1(object sender, EventArgs e)
{
for (int i = 0; i < 100000; i++)
{
textBox2.Text = "" + i;
if (a == i) textBox3.Text = "" + i;
}
}
}
最佳答案
这是因为视频中的程序在单独的线程中运行暴力循环。
在您的程序中,循环在主线程中运行,因此,只要循环在运行,就不会有线程监视消息泵,在该消息泵中会发生所有用户界面更新。
每当更改文本框的Text
属性时,都会在消息队列中放入一条消息,其中需要重绘该文本框以显示该值,但是主线程正忙于运行循环,因此不会对消息,直到循环完成。