C# BackgroundWorker

摘要:C# BackgroundWorker

在寫 Form 時,常常會遇到一執行 UI就當掉的情況,所以使用BackgroundWorker 來解學這種假當掉

而 BackgroundWorker 幾乎不用透過Delegate、Invoke、WaitCallBack等,因為都幫你實作了

 

1. 直接把他拉進去

 

 

2.新增 3 個事件

 

3.指出 backgroundWorker 是否能報告更新,True的話,可以邊做邊更新畫面

 public Form1()
        {
            InitializeComponent();
            backgroundWorker1.WorkerReportsProgress = true;//backgroundWorker can update 
        }

 

4. 在按鈕按下時呼叫 DoWork

backgroundWorker1.RunWorkerAsync();

 

5.這行會觸動ProgressChanged

backgroundWorker1.ReportProgress(i);

 

6.可以存取Main Thread的UI,不會有誇執行緒的問題,也就是UI的部分都這裡在做

private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            try
            {
                progressBar1.Maximum = barMaxValue; //用於progressBar
                progressBar1.Value = e.ProgressPercentage;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

 

7.當 DoWork 完成後會自動呼叫 RunWorkerCompleted ,可以把結果什麼的都寫在這

BackgroundWorker 的使用方法大概就先這樣了