我尝试制作简单的蛮力算法,可以正常工作,但我正在观看此视频

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属性时,都会在消息队列中放入一条消息,其中需要重绘该文本框以显示该值,但是主线程正忙于运行循环,因此不会对消息,直到循环完成。

10-08 11:23