C#使用后臺進程

C#使用多線程,推薦使用BackgroundWorker。

創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供河?xùn)|網(wǎng)站建設(shè)、河?xùn)|做網(wǎng)站、河?xùn)|網(wǎng)站設(shè)計、河?xùn)|網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、河?xùn)|企業(yè)網(wǎng)站模板建站服務(wù),十年河?xùn)|做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

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等接口進行多次賦值,否則會造成目標(biāo)函數(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);    
}

文章標(biāo)題:C#使用后臺進程
文章地址:http://muchs.cn/article2/ispiic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機、建站公司、網(wǎng)站設(shè)計、云服務(wù)器、全網(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)

成都做網(wǎng)站