狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

C# BackgroundWorker 后臺異步組件

admin
2024年1月13日 17:10 本文熱度 653

摘要

BackgroundWorker 是一個重要的 Windows 應用程序開發組件,它允許你在后臺執行耗時的操作,而不會阻塞應用程序的主 UI 線程。通過使用 BackgroundWorker,你可以使你的應用程序更加靈活,更加高效。

BackgroundWorker 組件是通過委托和異步編程技術實現的。你可以在組件的主類中定義一個輔助方法,該方法會在后臺執行,同時不會阻塞調用線程。這些輔助方法是異步的,因此它們不會阻塞 UI 線程。相反,調用線程可以繼續執行其他任務,直到異步方法完成。

一旦你定義了一個輔助方法,你可以使用 RunWorkerAsync 方法將其作為異步任務提交給 BackgroundWorker。在調用該方法時,BackgroundWorker 將創建一個線程池線程來執行輔助方法。在輔助方法運行時,調用線程將繼續執行其他任務,而不會阻塞。

當輔助方法完成時,BackgroundWorker 將引發一個事件。這個事件是可選的,但它可以包含有關輔助方法運行的信息,例如耗時,狀態和錯誤消息。如果你不需要事件,你可以使用 RunWorkerCompleted 方法立即結束任務。

BackgroundWorker 是一個非常有用的組件,它可以幫助你編寫高效的異步代碼。它使你能夠在后臺執行耗時的操作,而不會阻塞 UI 線程,這對于實現響應式和流暢的應用程序非常重要。無論你是編寫 Web 應用程序,移動應用程序還是桌面應用程序,BackgroundWorker 都是一個值得使用的工具。

正文


屬性



CancellationPending獲取一個值,指示應用程序是否已請求取消后臺操作。
CanRaiseEvents獲取一個指示組件是否可以引發事件的值。
Events獲取附加到此 Component 的事件處理程序的列表。
IsBusy獲取一個值,指示 BackgroundWorker 是否正在運行異步操作。
WorkerReportsProgress獲取或設置一個值,該值指示 BackgroundWorker 能否報告進度更新。
WorkerSupportsCancellation獲取或設置一個值,該值指示 BackgroundWorker 是否支持異步取消。

方法



CancelAsync()請求取消掛起的后臺操作。
OnDoWork(DoWorkEventArgs)引發 DoWork 事件。
OnProgressChanged(ProgressChangedEventArgs)引發 ProgressChanged 事件。
OnRunWorkerCompleted(RunWorkerCompletedEventArgs)引發 RunWorkerCompleted 事件。
ReportProgress(Int32)引發 ProgressChanged 事件。
ReportProgress(Int32, Object)引發 ProgressChanged 事件。
RunWorkerAsync()開始執行后臺操作。
RunWorkerAsync(Object)開始執行后臺操作。

實例化

//實例化BackgroundWorkerprivate BackgroundWorker bgWorker = new BackgroundWorker();


初使化

private void FrmMain_Load(object sender, EventArgs e)
{
    pbar.Maximum = 1000;
    //是否報告處理進度
    bgWorker.WorkerReportsProgress = true;
    //是否允許取消操作
    bgWorker.WorkerSupportsCancellation = true;
    //執行三個事件,DoWork事件,ProgressChanged事件以及RunWorkedCompleted事件
    bgWorker.DoWork += new DoWorkEventHandler(bgWorker_DoWork);
    bgWorker.ProgressChanged += new ProgressChangedEventHandler(bgWorker_ProgessChanged);
    bgWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bgWorker_WorkerCompleted);
}


事件

public void bgWorker_DoWork(object sender, DoWorkEventArgs e){    //設置進度條Maximum為1000,循環1000次    for (int i = 0; i <= 1000; i++)    {        //獲取是否取消操作        if (bgWorker.CancellationPending)        {            e.Cancel = true;            return;        }        else        {            //報告進度            bgWorker.ReportProgress(i, "Working");            System.Threading.Thread.Sleep(10);        }    }}
public void bgWorker_ProgessChanged(object sender, ProgressChangedEventArgs e){    //e.ProgressPercentage是獲取任務int類型    pbar.Value = e.ProgressPercentage;    lblTitle.Text = "處理進度:" + Convert.ToString(e.ProgressPercentage);}
public void bgWorker_WorkerCompleted(object sender, RunWorkerCompletedEventArgs e){    //若沒有完全執行結束,則報錯    if (e.Error != null)    {        MessageBox.Show(e.Error.ToString());        return;    }    if (!e.Cancelled)        this.lblTitle.Text = "處理完畢!";    else        this.lblTitle.Text = "處理終止!";}
//開始private void btnStart_Click(object sender, EventArgs e){    //正忙時不允許繼續操作    if (bgWorker.IsBusy)        return;    //異步開啟    bgWorker.RunWorkerAsync("start");}
//停止private void btnStop_Click(object sender, EventArgs e){    bgWorker.CancelAsync();}


該文章在 2024/1/13 17:10:02 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved