读取文件时用文件名更新标签

时间:2013-06-26 12:32:42

标签: user-interface label filenames

我在c#中设计了一个查询执行器,它允许您选择多个文件(.sql)并在从列表中选择的多个数据库上运行这些查询。 因为这个过程有时需要很长时间,所以我想向用户提供一些信息。在我的代码中,我首先遍历每个数据库,对于每个数据库,我遍历所有文件(.sql)并执行它们。 在我的表单中,我有两个标签,我想显示当前的数据库,另一个,显示正在运行的文件。 这已经完成,问题是标签没有更新,表单被冻结,我已经明白我必须使用线程,但不是如何。 这是我的代码:

for (int i = 0; i < listBox1.CheckedItems.Count; i++)
            {
                String bd = listBox1.CheckedItems[i].ToString();

                this.textBD.Text = bd; //UPDATE CURRENT DATABASE LABEL

                bd = bd.Replace("CL25DEMAYO.", "");

                string ConnStrng = "Data Source=CL25DEMAYO;Initial Catalog=" + bd + "; User Id=sa;Password=190205;";

                try
                {
                    this.SqlConn = new SqlConnection(ConnStrng);
                    this.SqlConn.Open();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }



                for (int e = 0; e < listBoxArchivos.Items.Count; e++)
                {
                    String archi = listBoxArchivos.Items[e].ToString();

                    this.textScript.Text = archi; //UPDATE CURRENT FILE LABEL

                    FileInfo file = new FileInfo(archi);
                    string script = file.OpenText().ReadToEnd();

                    SqlCommand command = new SqlCommand(script, SqlConn);

                    command.ExecuteNonQuery();
                }

                SqlConn.Close();
            }
如果有人可以帮助我,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

最后,我解决了使用BackgroundWorker,并通过方法invoke()更新标签。