2017-03-01 36 views
-1

我有一個程序,其進度條在程序完成之前不會更新。我做了一些挖掘,並發現我需要製作一個後臺工作人員,以便在我的while循環運行時進行更新。從示例中我只是沒有得到我應該做的。有人可以向我解釋如何設置它以及它在做什麼嗎?製作一個BackgroundWorker,使ProgressBar能夠工作

int progressBar; 

private void button3_Click(object sender, EventArgs e) 
     { 

      try 
      { 
       while (y < PriDID.Count) 
       { 
        cmd.CommandText = "SELECT COUNT(*) FROM Accounts WHERE ACCT='" + ACCT[y] + "'"; 
        int count = Convert.ToInt32(cmd.ExecuteScalar()); 

        if (count < 1) 
        { 
         progressBar = (y/SDM_ACCT.Count) * 100; 
         progressBar1.Value = progressBar; 
         progressBar1.Update(); 
         Console.WriteLine(SDM_ACCT[y - 1]); 
         cmd.CommandText = @"INSERT INTO Accounts(SDM_ACCT,Description) 
             values(" + "'" + ACCT[y] + "'," + "'" + Comment[y] + ")"; 
         cmd.ExecuteNonQuery(); 
         y++; 
         recordCount++; 
        } 
        else 
        { 
         y++; 
        } 


        MessageBox.Show(recordCount + " unique records successfully loaded to the Database."); 
       } 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show("Exception: " + ex.Message + " Please make sure you have selected a valid path for your CSV and database."); 
      } 

     } 
+0

你找到關於如何編寫一個後臺工作哪些信息,以及你有什麼具體的問題與你的實現呢? – Servy

+0

我發現了這個,但我只是不明白如何適應我的。 http://stackoverflow.com/questions/6481304/how-to-use-a-backgroundworker –

+1

你有什麼具體*問題適應你的情況?什麼不適合你? – Servy

回答

1

我想如果你看看這個例子,你會知道你是如何做到的。我編寫了一些值,並將變量命名爲與您相同的變量。如果你知道運行while循環需要多長時間,你可以聲明一個DoWork只寫這個---> progressBarWorker.DoWork + =和雙選項卡。你會得到一個DoWork處理器。並在事件處理程序可以使一個for循環)

對(INT I = 0;我< 100; i ++在)

{

Thread.Delay(100);

progressBarWorker.ReportProgress(i);

}

,然後把ProgressBarWorker.RunWorkerAsync();作爲button3事件處理程序中的第一件事。

A BackroundWorker Example I made for you

+0

獲取錯誤「此BackgroundWorker指出它不報告進度。修改WorkerReportsProgress以聲明它報告進度。」我錯過了什麼? –

+0

您必須設置ProgressBarWorker.WorkerReportsProgress = true; –

+0

好的,這個例子給了我一個間歇性的進度條。有時候,我在'progressBarWorker.ReportProgress(y);'上得到一個錯誤''說這個操作已經有OperationCompleted調用它並且進一步的調用是非法的。「即使這是第一次嘗試運行該程序。 –

相關問題