我有关注按钮单击事件:

private void btnRun_Click(object sender, EventArgs e)
    {
        label1.Visible = true;

        if (SelectDatabase())
        {
            if (string.IsNullOrEmpty(txtFolderAddress.Text))
                MessageBox.Show("Please select a folder to begin the search.");
            else
            {

                if (cbRecurse.Checked == false || Directory.GetDirectories(initialDirectory).Length == 0)
                {
                    CheckSingleFolder();
                }
                else
                {
                    CheckSingleFolder();
                    directoryRecurse(initialDirectory);
                }

                                }
        }


    }

实际上,它会进行一些检查,然后启动一些目录递归以查找特定文件。但是,只有在递归目录之后,才会出现使标签可见的第一行代码?有人知道为什么会这样吗?

谢谢。

最佳答案

您正在UI线程中做所有事情,这是一个非常糟糕的主意-在完成操作之前,UI不会更新,对事件使用react等。

您应该使用后台线程,并使用 Control.BeginInvoke 使用进度等更新UI,或者也许使用 BackgroundWorker

基本上,WinForms中有两个黄金法则(与WPF/Silverlight相似):

  • 不要在UI线程
  • 中做任何会花费大量时间的事情
  • 除了UI线程
  • 外,请勿触摸任何线程中的任何UI元素

    关于c# - C#-代码处理顺序-奇怪的行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5539314/

    10-17 00:05