如何顯示進度條
鑒於C#使用不多,似乎很難壹下子做出進度條,其他開發任務也在同時進行,所以昨天沒有太大進展。
今天是周末,剛好有空。在查閱了很多網上的資料和例子後,我做了幾個例子供以後使用。
使用C#顯示進度條涉及多線程編程。我只探索了使用BackgroundWorker和Thread的方法,如下所列。
第壹種:用BackgroundWorker控制進度條。
BackgroundWorker對象有三個主要事件:
DoWork-在執行BackgroundWorker對象的多線程操作時觸發。
RunWokerCompleted-當BackgroundWoker對象的多線程操作完成時觸發。
progress changed-當BackgroundWorker對象的多線程操作狀態更改時觸發。
WorkerReportsProgress-如果希望BackgroundWorker對象異步報告線程的實時進度,則必須將該屬性的值設置為true。
BackgroundWorker對象的ReportProgress方法用於將後臺線程執行的實時進度返回給主線程。
示例代碼1,控制主窗體中進度條的顯示。
[csharp]?查看純文本
公?部分?班級?Form1?:?形式
{
///?& lt總結& gt
///?後臺線程
///?& lt/summary & gt;
私人?背景工人?bkWorker?=?新的?background worker();
///?& lt總結& gt
///?步長值
///?& lt/summary & gt;
私人?int?百分比值?=?0;
公?表單1()
{
initialize component();
bkWorker。WorkerReportsProgress?=?真實;
bkWorker。workers supports取消?=?真實;
bkWorker。道克?+=?新的?DoWorkEventHandler(DoWork);
bkWorker。ProgressChanged?+=?新的?ProgressChangedEventHandler(progress changed);
bkWorker。RunWorkerCompleted?+=?新的?RunWorkerCompletedEventHandler(CompleteWork);
}
私人?作廢?btnStart_Click(對象?發件人?EventArgs?e)
{
百分比值?=?10;
this.progressBar1。最大?=?1000;
//?執行後臺操作
bkWorker。RunWorkerAsync();
}
公?作廢?DoWork(對象?發件人?DoWorkEventArgs?e)
{
//?事件處理,指定處理函數
e.結果?=?ProcessProgress(bkWorker,e);
}
公?作廢?ProgessChanged(對象?發件人?ProgressChangedEventArgs?e)
{
//?bkWorker。報告進展?將在這裏被調用,您可以在這裏自定義報告方法。
this.progressBar1。價值?=?e .進展百分比;
int?百分比?=?(int)(e.ProgressPercentage?/?百分比值);
this.label1。文字?=?"處理進度:"?+?轉換。ToString(百分比)?+?"%";
}
公?作廢?CompleteWork(對象?發件人?RunWorkerCompletedEventArgs?e)
{
this.label1。文字?=?“搞定!”;
}
私人?int?ProcessProgress(對象?發件人?DoWorkEventArgs?e)
{
為了什麽?(int?我?=?0;?我?& lt=?1000;?i++)
{
如果?(bkWorker。取消待定)
{
e.取消?=?真實;
回歸?-1;
}
其他
{
//?現狀報告
bkWorker。報告進展情況(壹);
//?等待對於UI刷新界面非常重要。
系統。threading . thread . sleep(1);
}
}
回歸?-1;
}
} ?
以下是運行結果。