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

C# BackgroundWorker組件學(xué)習(xí)入門介紹

 更新時(shí)間:2013年10月09日 16:21:56   作者:  
一個(gè)程序中需要進(jìn)行大量的運(yùn)算,并且需要在運(yùn)算過程中支持用戶一定的交互,為了獲得更好的用戶體驗(yàn),使用BackgroundWorker來完成這一功能

一個(gè)程序中需要進(jìn)行大量的運(yùn)算,并且需要在運(yùn)算過程中支持用戶一定的交互,為了獲得更好的用戶體驗(yàn),使用BackgroundWorker來完成這一功能.    

 BackgroundWorker類允許您在單獨(dú)的專用線程上運(yùn)行操作。  耗時(shí)的操作(如下載和數(shù)據(jù)庫事務(wù))在長時(shí)間運(yùn)行時(shí)可能會(huì)導(dǎo)致用戶界面 (UI) 似乎處于停止響應(yīng)狀態(tài)。

  如果您需要能進(jìn)行響應(yīng)的用戶界面,而且面臨與這類操作相關(guān)的長時(shí)間延遲,則可以使用 BackgroundWorker類方便地解決問題(MSDN)。

        若要在后臺(tái)執(zhí)行耗時(shí)的操作,請創(chuàng)建一個(gè) BackgroundWorker,偵聽那些報(bào)告操作進(jìn)度并在操作完成時(shí)發(fā)出信號(hào)的事件。  可以通過編程方式創(chuàng)建 BackgroundWorker,

  也可以將它從“工具箱”的“組件”選項(xiàng)卡中拖到窗體上。  如果在 Windows 窗體設(shè)計(jì)器中創(chuàng)建 BackgroundWorker,則它會(huì)出現(xiàn)在組件欄中,而且它的屬性會(huì)顯示在“屬性”窗口中(MSDN)。

屬性:

   IsBusy:獲取一個(gè)值,指示 BackgroundWorker 是否正在運(yùn)行異步操作。
   WorkerReportsProgress:獲取或設(shè)置一個(gè)值,該值指示 BackgroundWorker 能否報(bào)告進(jìn)度更新。
   WorkerSupportsCancellation:獲取或設(shè)置一個(gè)值,該值指示 BackgroundWorker 是否支持異步取消。

事件:

DoWork:調(diào)用 RunWorkerAsync 時(shí)發(fā)生。
ProgressChanged:調(diào)用 ReportProgress 時(shí)發(fā)生。
RunWorkerCompleted:當(dāng)后臺(tái)操作已完成、被取消或引發(fā)異常時(shí)發(fā)生。

實(shí)例:

 窗體設(shè)計(jì)如下圖:



代碼實(shí)現(xiàn):

復(fù)制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            backgroundWorker1.WorkerReportsProgress = true;
            backgroundWorker1.WorkerSupportsCancellation = true;
        }

        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker worker = sender as BackgroundWorker;

            for (int i = 1; i <= 12; i++)
            {
                if (worker.CancellationPending == true)
                {
                    e.Cancel = true;
                    break;
                }
                else
                {
                    System.Threading.Thread.Sleep(500);
                    worker.ReportProgress(i * 10);
                }
            }
        }

        private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            lbResult.Text = (e.ProgressPercentage.ToString() + "%"+e.UserState);
        }

        private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            if (e.Cancelled == true)
            {
                lbResult.Text = "Canceled!";
            }
            else if (e.Error != null)
            {
                lbResult.Text = "Error: " + e.Error.Message;
            }
            else
            {
                lbResult.Text = "Done!";
            }
        }

        private void btnStartAsync_Click(object sender, EventArgs e)
        {
            if (backgroundWorker1.IsBusy != true)
            {
                backgroundWorker1.RunWorkerAsync();
            }
        }

        private void btnCancelAsync_Click(object sender, EventArgs e)
        {
            if (backgroundWorker1.WorkerSupportsCancellation == true)
            {
                backgroundWorker1.CancelAsync();
            }
        }
    }
}

運(yùn)行結(jié)果:

相關(guān)文章

  • C#?中的多態(tài)底層虛方法調(diào)用詳情

    C#?中的多態(tài)底層虛方法調(diào)用詳情

    這篇文章主要介紹了C#?中的多態(tài)底層虛方法調(diào)用詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,需要的小伙伴你可以參考一下
    2022-06-06
  • C#數(shù)字圖像處理之圖像縮放的方法

    C#數(shù)字圖像處理之圖像縮放的方法

    這篇文章主要介紹了C#數(shù)字圖像處理之圖像縮放的方法,涉及C#針對(duì)圖像的縮放技巧,需要的朋友可以參考下
    2015-04-04
  • 在winform下實(shí)現(xiàn)左右布局多窗口界面的方法之續(xù)篇

    在winform下實(shí)現(xiàn)左右布局多窗口界面的方法之續(xù)篇

    這篇文章主要介紹了在winform下實(shí)現(xiàn)左右布局多窗口界面的方法之續(xù)篇 的相關(guān)資料,需要的朋友可以參考下
    2016-02-02
  • C#數(shù)組的常用操作方法小結(jié)

    C#數(shù)組的常用操作方法小結(jié)

    Array數(shù)組在C#中同樣是最基本的數(shù)據(jù)結(jié)構(gòu),下面為大家C#數(shù)組的常用操作方法小結(jié),皆為細(xì)小的代碼段,歡迎收看收藏
    2016-05-05
  • C#把文件上傳到服務(wù)器中的指定地址

    C#把文件上傳到服務(wù)器中的指定地址

    這篇文章介紹了C#實(shí)現(xiàn)文件上傳到服務(wù)器指定地址的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • C#使用Aforge調(diào)用攝像頭拍照的方法

    C#使用Aforge調(diào)用攝像頭拍照的方法

    這篇文章主要為大家詳細(xì)介紹了C#使用Aforge調(diào)用攝像頭拍照的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • C#中Equality和Identity淺析

    C#中Equality和Identity淺析

    這篇文章主要介紹了C#中Equality和Identity淺析,本文先是講解了Equality和Identity的定義,同時(shí)講解了判斷兩個(gè)對(duì)象等價(jià)性的4種方法,需要的朋友可以參考下
    2014-12-12
  • C#使用linq計(jì)算執(zhí)行元素在列表中出現(xiàn)次數(shù)的方法

    C#使用linq計(jì)算執(zhí)行元素在列表中出現(xiàn)次數(shù)的方法

    這篇文章主要介紹了C#使用linq計(jì)算執(zhí)行元素在列表中出現(xiàn)次數(shù)的方法,涉及C#使用linq擴(kuò)展進(jìn)行列表查詢的技巧,需要的朋友可以參考下
    2015-04-04
  • C# 判斷文件路徑的后綴

    C# 判斷文件路徑的后綴

    本文主要介紹了C# 判斷文件路徑的后綴,,通過解析文件名并檢查其擴(kuò)展名來判斷文件的后綴是否為.dcm,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01
  • Unity實(shí)現(xiàn)倒計(jì)時(shí)組件

    Unity實(shí)現(xiàn)倒計(jì)時(shí)組件

    這篇文章主要介紹了Unity實(shí)現(xiàn)倒計(jì)時(shí)組件的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05

最新評(píng)論