.
執行緒的主要目的就是可以同步處理許多程序,不會讓CPU為了等待或處理某項程序而卡住,造成資源的浪費甚至衍生其他問題
用法首先就是加入backgroundWorker 元件,然後選定要觸發的事件,主要分成三部分:
backgroundWorker_DoWork 定義執行緒內要做的事情
backgroundWorker_ProgressChanged定義執行時UI的變更
backgroundWorker_RunWorkerCompleted定義完成時要顯示的內容或動作
Example:
定義一個按鈕將要執行的動作給執行緒處理
int _file_count=0;
private void btnLoadData_Click(object sender, EventArgse)
{
backgroundWorker1.RunWorkerAsync();//移到執行緒執行
}
//定義執行緒要做的動作
private void backgroundWorker1_DoWork(object sender,DoWorkEventArgs e)
{
progressBar1.Minimum = 0;
progressBar1.Maximum = 100;
foreach (stringfname in System.IO.Directory.GetFileSystemEntries("d:\\sample"))
{
//調用ProgressChanged改變form元件數值 否則無法跨執行緒執行
backgroundWorker1.ReportProgress(_file_count);
_file_count++;
}
}
//檔要刷UI時調用此方法
private void backgroundWorker1_ProgressChanged(objectsender, ProgressChangedEventArgs e)
{
progressBar1.Visible= true;
// e.ProgressPercentage為剛剛傳入的參數
progressBar1.Value= ((int)e.ProgressPercentage); //計算執行百分比
//更新progressBar
lb_progress_value.Text="載入完成率"+progressBar1.Value.ToString()+" %";
}
//當執行緒完成時
private voidbackgroundWorker1_RunWorkerCompleted_1(object sender,RunWorkerCompletedEventArgs e)
{
if(_ok)
{
MessageBox.Show("載入完畢"); //顯示訊息
}
//隱藏progressBar
progressBar1.Visible= false;
lb_progress_value.Visible= false;
}