欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c#中使用BackgroundWorker的實現(xiàn)

 更新時間:2022年06月23日 10:50:09   作者:故里2130  
本文主要介紹了c#中使用BackgroundWorker的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

在客戶端中,為了防止界面假死狀態(tài),或者不能拖動界面,可以使用BackgroundWorker。

1.在界面上拖動一個BackgroundWorker,label,進度條和2個button控件。BackgroundWorker也可以選擇在cs文件中new。

2.bgWorker_DoWork事件中接收到bgWorker.RunWorkerAsync("11111")

3.bgWorker_ProgessChanged事件中接收到bgWorker.ReportProgress方法傳遞過來的參數

 4.bgWorker_WorkerCompleted事件中主要處理線程暫?;蛘呓K止時的提示

5.中途取消操作后,也就是執(zhí)行bgWorker.CancelAsync()此方法。bgWorker.CancellationPending會變成true

所有代碼:

    public partial class Form1 : Form
    {
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void btnStart_Click(object sender, EventArgs e)
        {
            if (bgWorker.IsBusy)              //判斷是否正在運行異步操作
                return;
            this.progressBar1.Maximum = 100;  //設置進度條最大值
            this.btnStart.Enabled = false;
            this.btnStop.Enabled = true;
            bgWorker.RunWorkerAsync("11111");   //給業(yè)務傳遞參數,就是把前臺的要處理的參數傳遞進去
        }
 
        public void bgWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            //業(yè)務處理
            object s = e.Argument;   //這的e.Argument就是上面?zhèn)鬟f的參數 11111
            for (int i = 0; i <= this.progressBar1.Maximum; i++)
            {
                if (bgWorker.CancellationPending)     //此處關聯(lián)的是btnStop_Click事件中的這個bgWorker.CancelAsync();如果這個觸發(fā)了,那么就會停止。
                {
                    e.Cancel = true;
                    return;
                }
                else
                {
                    bgWorker.ReportProgress(i, "222222"); //向bgWorker_ProgessChanged事件傳遞參數,第一個是進度的參數,第二個是你要處理業(yè)務的參數
                    System.Threading.Thread.Sleep(1);
                }
            }
        }
 
        public void bgWorker_ProgessChanged(object sender, ProgressChangedEventArgs e)
        {
            //頁面處理
            string state = (string)e.UserState;//接收上bgWorker.ReportProgress方法傳遞過來的參數userState
            this.progressBar1.Value = e.ProgressPercentage;
            this.label1.Text = "處理進度:" + Convert.ToString(e.ProgressPercentage) + "%";
            //label2.Text = e.ProgressPercentage.ToString();
        }
 
        public void bgWorker_WorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            if (e.Error != null)
            {
                MessageBox.Show(e.Error.ToString());
                return;
            }
            if (!e.Cancelled)
                this.label1.Text = "處理完畢!";
            else
                this.label1.Text = "處理終止!";
 
        }
 
        private void btnStop_Click(object sender, EventArgs e)
        {
            this.btnStart.Enabled = true;
            this.btnStop.Enabled = false;
            bgWorker.CancelAsync();
        }
 
    }

多個線程的話,在A_DoWork開啟另外一個bw,可以一直套用。

總結。

主要是3個事件:

  • bgWorker_DoWork:業(yè)務內部處理大量數據的地方,后臺默默處理數據。(關于界面控件的東西,這里不要出現(xiàn),比如給控件賦值,這里不要出現(xiàn))
  • bgWorker_ProgessChanged:每次業(yè)務內部處理完成一部分時,就會告訴界面我處理了什么,主要是給前臺顯示信息。(這里可以與前臺一起交互)
  • bgWorker_WorkerCompleted:終止或者完成后就會進入(這里可以是完成數據后,給控件賦值)

3個方法:

  • RunWorkerAsync:向業(yè)務內部傳遞處理數據的方法,傳遞集合,數值之類的
  • ReportProgress:把處理的進度告訴界面
  • CancelAsync:取消操作會執(zhí)行此方法

 到此這篇關于c#中使用BackgroundWorker的實現(xiàn)的文章就介紹到這了,更多相關c# BackgroundWorker內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • CAD2008+VS2008開發(fā)ObjectARX加載失敗問題(推薦)

    CAD2008+VS2008開發(fā)ObjectARX加載失敗問題(推薦)

    這篇文章主要介紹了CAD2008+VS2008開發(fā)ObjectARX加載失敗問題,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • C#微信公眾號開發(fā)之接收事件推送與消息排重的方法

    C#微信公眾號開發(fā)之接收事件推送與消息排重的方法

    這篇文章主要介紹了C#微信公眾號開發(fā)之接收事件推送與消息排重的方法,詳細分析了事件推送與消息排重的使用技巧,對微信開發(fā)有一定參考借鑒價值,需要的朋友可以參考下
    2015-01-01
  • WPF中TreeView控件的用法

    WPF中TreeView控件的用法

    這篇文章介紹了WPF中TreeView控件的用法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • C#實現(xiàn)json的序列化和反序列化實例代碼

    C#實現(xiàn)json的序列化和反序列化實例代碼

    這篇文章主要介紹了C#實現(xiàn)json的序列化和反序列化實例代碼,有需要的朋友可以參考一下
    2013-12-12
  • C# Double轉化為String時的保留位數及格式方式

    C# Double轉化為String時的保留位數及格式方式

    這篇文章主要介紹了C# Double轉化為String時的保留位數及格式方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • c#數據綁定之數據轉化為信息的示例

    c#數據綁定之數據轉化為信息的示例

    這篇文章主要介紹了c#數據綁定中的數據轉化為信息的示例,需要的朋友可以參考下
    2014-04-04
  • C# web.config之<customErrors>節(jié)點說明案例詳解

    C# web.config之<customErrors>節(jié)點說明案例詳解

    這篇文章主要介紹了C# web.config之<customErrors>節(jié)點說明案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • C#多線程中如何運用互斥鎖Mutex

    C#多線程中如何運用互斥鎖Mutex

    這篇文章主要為大家詳細介紹了C#多線程中如何運用互斥鎖Mutex,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • C#文件和字節(jié)流的轉換方法

    C#文件和字節(jié)流的轉換方法

    這篇文章主要介紹了C#文件和字節(jié)流的轉換方法,涉及C#將文件以字節(jié)流形式讀取及將字節(jié)流寫入文件的相關技巧,需要的朋友可以參考下
    2015-05-05
  • C#中Cookie之存儲對象

    C#中Cookie之存儲對象

    這篇文章主要介紹了在項目中,需要將用戶的信息存到Cookie中,但是cookie只能保存字符串,所以需要先序列號,然后在存儲在cookie中,有需要的朋友可以借鑒下
    2015-07-07

最新評論