2013-06-26 73 views
0

我在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(); 
      } 

將不勝感激,如果有人可以幫助我。

回答

0

最後,我解決了使用BackgroundWorker,並通過方法invoke()更新標籤。