亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#中backgroundworker的使用教程

2019-10-29 21:06:04
字體:
來源:轉載
供稿:網友

介紹:

根據MSDN介紹:

         BackgroundWorker 類允許您在單獨的專用線程上運行操作。 耗時的操作(如下載和數據庫事務)在長時間運行時可能會導致用戶界面 (UI) 似乎處于停止響應狀態。 如果您需要能進行響應的用戶界面,而且面臨與這類操作相關的長時間延遲,則可以使用 BackgroundWorker 類方便地解決問題。

       若要在后臺執行耗時的操作,請創建一個 BackgroundWorker,偵聽那些報告操作進度并在操作完成時發出信號的事件。 可以通過編程方式創建 BackgroundWorker,也可以將它從“工具箱”的“組件”選項卡中拖到窗體上。 如果在 Windows 窗體設計器中創建 BackgroundWorker,則它會出現在組件欄中,而且它的屬性會顯示在“屬性”窗口中。

       若要為后臺操作做好準備,請添加 DoWork 事件的事件處理程序。 在此事件處理程序中調用耗時的操作。 若要開始此操作,請調用 RunWorkerAsync。 若要收到進度更新的通知,請處理 ProgressChanged 事件。 若要在操作完成時收到通知,請處理 RunWorkerCompleted 事件。

有2點需要注意的:

   1、由于DoWork事件內部的代碼運行在非UI線程之上,確保在 DoWork 事件處理程序中不操作任何用戶界面對象。 而應該通過 ProgressChanged 和 RunWorkerCompleted 事件與用戶界面進行通信。

   2、BackgroundWorker 事件不跨 AppDomain 邊界進行封送處理。 請不要使用 BackgroundWorker 組件在多個 AppDomain 中執行多線程操作。

使用:

運行顯示:

#14a675c42d9185c117091029e30dcb9c#

1、聲明一個BackgroundWorker

BackgroundWorker backgroundWorker1 = null; 

2、初始化BackgroundWorker,設置屬性并綁定事件

public Form1() {  InitializeComponent();  backgroundWorker1 = new BackgroundWorker();  backgroundWorker1.WorkerReportsProgress = true;//能否報告進度更新。  backgroundWorker1.WorkerSupportsCancellation = true;//是否支持異步取消  //綁定事件  backgroundWorker1.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork);  backgroundWorker1.ProgressChanged += new ProgressChangedEventHandler(backgroundWorker1_ProgressChanged);  backgroundWorker1.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backgroundWorker1_RunWorkerCompleted); } 

3、BackgroundWorker事件

DoWork事件

private void backgroundWorker1_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e) {   //句柄sender指向的就是該BackgroundWorker。   //e.Argument 獲取異步操作參數的值  //e.Cancel 是否應該取消事件  //e.Result 獲取或設置異步操作結果的值(在RunWorkerCompleted事件可能會使用到)  object a = e.Argument;//獲取RunWorkerAsync(object argument)傳入的值  BackgroundWorker worker = sender as BackgroundWorker;      for (int i = 1; i <= 10; i++)  {   if (worker.CancellationPending == true)//在耗時操作中判斷CancellationPending屬性,如果為false則退出   {    e.Cancel = true;    break;   }   else   {    // Perform a time consuming operation and report progress.    System.Threading.Thread.Sleep(500);    worker.ReportProgress(i * 10, "Object userState");// 將觸發BackgroundWorker.ProgressChanged事件,向ProgressChanged報告進度   }  }  e.Result = "結束"; } 

RunWorkerCompleted事件:當DoWork事件處理完成之后,將會觸發該事件。

private void backgroundWorker1_RunWorkerCompleted(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e) {  //e.Cancelled指示異步操作是否已被取消  //e.Error 指示異步操作期間發生的錯誤  //e.Result 獲取異步操作結果的值,即DoWork事件中,Result設置的值。  if (e.Cancelled == true)  {   resultLabel.Text = "Canceled!";  }  else if (e.Error != null)  {   resultLabel.Text = "Error: " + e.Error.Message;  }  else  {   resultLabel.Text = e.Result.ToString();  } }

ProgressChanged事件:ProgressChanged事件處理程序的第二個參數e有一個ProgressPercentage屬性,它就由 ReportProgress的第一個參數percentProgress來提供。這個參數一般用來報告該后臺操作完成的進度,然后用ProgressChanged的第二個參數e的ProgressPercentage屬性來獲取該進度信息。如果用戶還想傳遞更多的信息,可以使用ReportProgress的第二種重載,它的第二個參數userState將會傳遞給ProgressChanged事件的參數e的UserState屬性。

private void backgroundWorker1_ProgressChanged(object sender, System.ComponentModel.ProgressChangedEventArgs e) {  //e.ProgressPercentage 獲取異步操作進度的百分比  resultLabel.Text = (e.ProgressPercentage.ToString() + "%");  string state = (string)e.UserState;//接收ReportProgress方法傳遞過來的userState }

4、按鈕事件

 //開始按鈕 private void btnStart_Click(object sender, EventArgs e) {  if (backgroundWorker1.IsBusy != true)//判斷BackgroundWorker 是否正在運行異步操作。  {   // Start the asynchronous operation.   backgroundWorker1.RunWorkerAsync("object argument");//啟動異步操作,有兩種重載。將觸發BackgroundWorker.DoWork事件  } }  //終止 private void btnEnd_Click(object sender, EventArgs e) {  if (backgroundWorker1.WorkerSupportsCancellation == true)  {   // Cancel the asynchronous operation.   backgroundWorker1.CancelAsync(); //請求取消掛起的后臺操作。調用該方法將使BackgroundWorker.CancellationPending屬性設置為True。  } } 

總結

以上所述是小編給大家介紹的C#中backgroundworker的使用教程,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩福利在线观看| 亚洲伦理中文字幕| 97视频在线观看免费高清完整版在线观看| 亚洲aaaaaa| 91精品在线播放| 午夜免费久久久久| 国产成人精品久久亚洲高清不卡| 欧美专区中文字幕| 国内精久久久久久久久久人| 欧美小视频在线观看| 日本欧美爱爱爱| 国产+成+人+亚洲欧洲| 欧美大学生性色视频| 亚洲人成网站777色婷婷| 久久久久在线观看| 欧美日韩成人免费| 欧美日韩一区二区在线播放| 欧美一级片一区| 亚洲精品v天堂中文字幕| 91豆花精品一区| 日韩精品亚洲元码| 亚洲午夜精品久久久久久性色| 狠狠色噜噜狠狠狠狠97| 国产中文欧美精品| 日韩综合视频在线观看| 国产精品日本精品| 亚洲2020天天堂在线观看| 日韩精品中文字幕在线播放| 国产精品伦子伦免费视频| 国产日本欧美一区二区三区在线| 大伊人狠狠躁夜夜躁av一区| 精品性高朝久久久久久久| 国产精品电影在线观看| 亲子乱一区二区三区电影| 国产精品综合不卡av| 国产成人一区二区在线| 国产精品video| 91干在线观看| 日韩av成人在线| 亚洲一区二区国产| 久久亚洲精品中文字幕冲田杏梨| 国内精品久久久久久影视8| 欧美又大粗又爽又黄大片视频| 欧美激情区在线播放| 中文字幕日韩专区| 久久久久久成人精品| 免费91在线视频| www.国产精品一二区| 久久精品人人做人人爽| 久久久久久久久久久久av| 在线免费观看羞羞视频一区二区| 91免费看片网站| 欧美理论片在线观看| 亚洲a∨日韩av高清在线观看| 亚洲色图18p| 97久久精品视频| 色综合久久中文字幕综合网小说| 欧美超级免费视 在线| 成人激情电影一区二区| 亚洲自拍av在线| 亚洲一区二区三区在线视频| 亚洲美女福利视频网站| 国产精品高清网站| 久久久999国产精品| 国产日韩欧美在线看| 亚洲毛片一区二区| 国产精品午夜一区二区欲梦| 亚洲欧美在线播放| 91精品成人久久| 欧美精品在线免费观看| 日韩在线观看成人| 精品久久久久久久久久久| 不卡在线观看电视剧完整版| 精品视频—区二区三区免费| 亚洲乱码av中文一区二区| 成人国产在线视频| 91sao在线观看国产| 在线视频一区二区| 久久777国产线看观看精品| 欧洲精品在线视频| 久久久91精品国产一区不卡| 日本午夜在线亚洲.国产| 欧美一区二区三区四区在线| 日韩中文字幕免费| 97超级碰碰碰| 午夜精品一区二区三区在线视频| 欧美亚洲视频一区二区| 亚洲精品网站在线播放gif| 成人h猎奇视频网站| 韩国三级电影久久久久久| 日韩精品久久久久久福利| 性欧美xxxx| 国产91色在线|免| 国产精品久久久久一区二区| 欧美激情在线视频二区| 欧美激情一区二区三级高清视频| 欧美激情xxxxx| 国产一区二区美女视频| 日韩视频第一页| 97超碰蝌蚪网人人做人人爽| 伊人久久免费视频| 日韩一区二区三区国产| 国产视频久久久久久久| 欧美性jizz18性欧美| 国产精品aaaa| 亚洲aⅴ男人的天堂在线观看| 中文字幕一精品亚洲无线一区| 成人福利网站在线观看11| 久久免费少妇高潮久久精品99| 亚洲精品成人久久| 久久伊人精品视频| 亚洲乱码国产乱码精品精| 亚洲人av在线影院| 成人疯狂猛交xxx| 7777kkkk成人观看| 亚洲理论片在线观看| 日韩精品中文字幕有码专区| 911国产网站尤物在线观看| 国产一区二区精品丝袜| 日本高清久久天堂| 久久久伊人欧美| 国产一区二区三区在线播放免费观看| 成人av在线网址| 青青久久av北条麻妃黑人| 中文字幕免费国产精品| 9.1国产丝袜在线观看| 亚洲另类激情图| 久久精品在线视频| 91久久久久久久久| 一区二区欧美在线| 亚洲精品国产福利| 日韩中文在线不卡| 日韩成人av在线| 国内伊人久久久久久网站视频| 亚洲综合一区二区不卡| 国产精品一区二区久久国产| 久久男人av资源网站| 欧美日韩国产91| 一区二区三区在线播放欧美| 久久成人av网站| 国产91精品久久久| 亚洲国产天堂久久综合网| 欧美一区二区三区免费观看| 欧美成年人网站| 国产精品高潮视频| 日韩欧美在线观看视频| 欧美老少做受xxxx高潮| 日本精品中文字幕| 中文字幕精品在线视频| 久久久国产精品一区| 亚洲色在线视频| 亚洲欧美日韩天堂| 亚洲欧美三级伦理| 欧美午夜影院在线视频| 欧美影院成年免费版| 尤物九九久久国产精品的分类| 国产97色在线|日韩| 久久精品国产亚洲7777| 91在线直播亚洲| 成人国产精品久久久久久亚洲| 中文字幕亚洲欧美一区二区三区| 日韩精品视频三区| 国产精品免费看久久久香蕉| 国产精品视频一区二区高潮|