C#使用多線程,推薦使用BackgroundWorker。
創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供河東網(wǎng)站建設、河東做網(wǎng)站、河東網(wǎng)站設計、河東網(wǎng)站制作等企業(yè)網(wǎng)站建設、網(wǎng)頁設計與制作、河東企業(yè)網(wǎng)站模板建站服務,十年河東做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡服務。
1、定義:
BackgroundWorker BgWorker = new BackgroundWorker();
2、初始化:
BgWorker.WorkerReportsProgress = true;
BgWorker.DoWork += BgWorker_DoWork;
BgWorker.ProgressChanged += BgWorker_ProgressChanged;
BgWorker.RunWorkerCompleted += BgWorker_RunWorkerCompleted;
其中DoWork是線程要執(zhí)行的函數(shù)。
ProgressChanged 是進度更新時的回調(diào)函數(shù)
RunWorkerCompleted 是線程執(zhí)行完成時的回調(diào)函數(shù),這個函數(shù)里面可以直接調(diào)用UI線程的東西。
注意:不可以把BackgroundWorker的DoWork等接口進行多次賦值,否則會造成目標函數(shù)被多次調(diào)用的問題。正確的做法是,每次需要重新賦值的時候,都進行BgWorker = new BackgroundWorker()操作。
3、函數(shù)體實現(xiàn):
void BgWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
int progress = e.ProgressPercentage;
LabelProgress.Text = string.Format("完成{0}%", progress);
LabelProgress.Left = (this.Width - LabelProgress.Width) / 2;
}
void BgWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (PictureList.Count > 0)
{
ShowPicture(curIndex);
}
LabelProgress.Visible = false;
}
void BgWorker_DoWork(object sender, DoWorkEventArgs e)
{
List<string> picList = new List<string>();
string[] extList = { ".jpg", ".png" };
int index = 0;
foreach (string item in fileList)
{
if (extList.Contains(System.IO.Path.GetExtension(item).ToLower()) == true)
{
string backName = AddImageToDB(item);
Debug.WriteLine("ImageName:" + backName);
if (string.IsNullOrEmpty(backName) == false)
picList.Add(backName);
}
index++;
BgWorker.ReportProgress(100 * index / fileList.Count);
}
curIndex = PictureList.Count;
PictureList.AddRange(picList);
}
文章標題:C#使用后臺進程
文章地址:http://aaarwkj.com/article2/ispiic.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供虛擬主機、建站公司、網(wǎng)站設計、云服務器、全網(wǎng)營銷推廣、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)