摘要: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 的使用方法大概就先這樣了