最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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方法傳遞過來的參數(shù)

 4.bgWorker_WorkerCompleted事件中主要處理線程暫停或者終止時的提示

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è)務傳遞參數(shù),就是把前臺的要處理的參數(shù)傳遞進去
        }
 
        public void bgWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            //業(yè)務處理
            object s = e.Argument;   //這的e.Argument就是上面?zhèn)鬟f的參數(shù) 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事件傳遞參數(shù),第一個是進度的參數(shù),第二個是你要處理業(yè)務的參數(shù)
                    System.Threading.Thread.Sleep(1);
                }
            }
        }
 
        public void bgWorker_ProgessChanged(object sender, ProgressChangedEventArgs e)
        {
            //頁面處理
            string state = (string)e.UserState;//接收上bgWorker.ReportProgress方法傳遞過來的參數(shù)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è)務內部處理大量數(shù)據(jù)的地方,后臺默默處理數(shù)據(jù)。(關于界面控件的東西,這里不要出現(xiàn),比如給控件賦值,這里不要出現(xiàn))
  • bgWorker_ProgessChanged:每次業(yè)務內部處理完成一部分時,就會告訴界面我處理了什么,主要是給前臺顯示信息。(這里可以與前臺一起交互)
  • bgWorker_WorkerCompleted:終止或者完成后就會進入(這里可以是完成數(shù)據(jù)后,給控件賦值)

3個方法:

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

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

相關文章

  • c#對XML文檔的創(chuàng)建與增刪改查的示例代碼

    c#對XML文檔的創(chuàng)建與增刪改查的示例代碼

    這篇文章主要介紹了c#對XML文檔的創(chuàng)建與增刪改查的示例代碼,文中講解非常細致,幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-07-07
  • c#中LINQ的基本用法(二)

    c#中LINQ的基本用法(二)

    這篇文章介紹了c#中LINQ的基本用法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下的相關資料
    2022-04-04
  • 用C#編寫ActiveX控件(三)

    用C#編寫ActiveX控件(三)

    用C#編寫ActiveX控件(三)...
    2007-03-03
  • C#實現(xiàn)自定義動畫鼠標的示例詳解

    C#實現(xiàn)自定義動畫鼠標的示例詳解

    這篇文章主要為大家詳細介紹了如何利用C#實現(xiàn)自定義動畫鼠標效果,文中的示例代碼講解詳細,對我們學習C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • 詳細聊聊C#的并發(fā)機制優(yōu)秀在哪

    詳細聊聊C#的并發(fā)機制優(yōu)秀在哪

    并發(fā)其實是一個很泛的概念,字面意思就是"同時做多件事",不過方式有所不同,下面這篇文章主要給大家介紹了關于C#并發(fā)機制的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-02-02
  • C# XML基礎入門小結(XML文件內容增刪改查清)

    C# XML基礎入門小結(XML文件內容增刪改查清)

    本文主要介紹了C# XML基礎入門小結(XML文件內容增刪改查清),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-04-04
  • C#實現(xiàn)QQ聊天窗口

    C#實現(xiàn)QQ聊天窗口

    這篇文章主要為大家詳細介紹了C#實現(xiàn)QQ聊天窗口,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • C#使用StructLayout特性來控制內存結構的操作代碼

    C#使用StructLayout特性來控制內存結構的操作代碼

    在C#中,內存布局對于性能優(yōu)化和與非托管代碼的互操作性至關重要,StructLayout特性允許開發(fā)者控制結構在內存中的布局方式,本文給大家介紹了C#使用StructLayout特性來控制內存結構的操作,需要的朋友可以參考下
    2024-10-10
  • 基于StreamRead和StreamWriter的使用(實例講解)

    基于StreamRead和StreamWriter的使用(實例講解)

    下面小編就為大家分享一篇基于StreamRead和StreamWriter的使用實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-11-11
  • c# split分隔字符串使用方法

    c# split分隔字符串使用方法

    本文主要介紹了c#使用split分隔字符串的使用方法,大家參考使用吧
    2014-01-01

最新評論

和静县| 攀枝花市| 丰台区| 盐津县| 柳林县| 芦山县| 丰原市| 安多县| 舒兰市| 阿图什市| 象山县| 疏勒县| 徐闻县| 涿州市| 万年县| 永定县| 自贡市| 连平县| 花垣县| 灵璧县| 齐齐哈尔市| 高州市| 桐庐县| 黄石市| 元氏县| 钟祥市| 镇宁| 淮阳县| 咸阳市| 浙江省| 夹江县| 博白县| 锡林浩特市| 行唐县| 奇台县| 水富县| 乐业县| 岱山县| 荆州市| 黑河市| 东乌珠穆沁旗|