Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
蛮力-c#_C#_Textbox_Brute Force - Fatal编程技术网

蛮力-c#

蛮力-c#,c#,textbox,brute-force,C#,Textbox,Brute Force,我试着制作简单的暴力算法。它工作正常。但我正在看这个视频 (时间10:30)正如您在textbox2中看到的,可能性发生了变化。但在我的程序中,我创建了1323作为密码,然后当我单击“暴力”时,我等待了5秒钟,在textbox2中得到99999,在textbox3中得到1323。为什么我无法像视频中那样看到textbox2中的数字流 public partial class Form1 : Form { public Form1() { InitializeCo

我试着制作简单的暴力算法。它工作正常。但我正在看这个视频

(时间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; 
        }
    }
}
公共部分类表单1:表单
{
公共表格1()
{
初始化组件();
} 
INTA,b;
私有无效按钮1\u单击(对象发送者,事件参数e)
{
a=转换为16(textBox1.Text);
}
私有无效按钮2\u单击\u 1(对象发送者,事件参数e)
{
对于(int i=0;i<100000;i++)
{
textBox2.Text=”“+i;
如果(a==i)textBox3.Text=”“+i;
}
}
}

这是因为视频中的程序在单独的线程中运行蛮力循环

在您的程序中,循环在主线程中运行,因此只要它在运行,就没有线程监视所有用户界面更新发生的消息泵


每当文本框的
Text
属性发生更改时,消息队列中就会出现一条消息,需要重新绘制文本框以显示值,但主线程正忙于运行循环,并且在循环完成之前不会对消息进行操作。

在windows窗体中,用户界面只有一个线程,代码隐藏中的所有代码也在此线程上处理,因此当它运行
for
循环时,不会在屏幕上重新绘制更改

解决这个问题的方法是使用一个单独的线程进行处理,并允许用户界面线程重新绘制屏幕上的更改

关于您的代码示例,您应该声明如下字段:

public partial class Form1 : Form
{
    private int a;
    private int b;

    ...
}
你也应该给他们起个更有意义的名字

此外,您应该在int上使用
.ToString()
方法,而不是将其与空字符串连接以获取文本值

textBox2.Text = i.ToString();

哇,这是一个声明实例字段的奇怪地方…每次更改文本框时,都需要刷新文本框中的文本,否则它不会显示。不知道如何做到这一点,虽然这与蛮力并没有多大关系,而不是正确地处理UI更新。