<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      C# 使用BackgroundWorker例子及注意點

      該例子為使用BackgroundWorker在TextBox文本中產生一個10000以內并且能被5整除的數(shù)(1秒產生一個)

      操作界面可以啟動線程,也可以停止線程,界面設計如圖:

      先貼代碼,有注釋的地方就不解釋了。

      先引入命名空間:using System.Threading;  using System.Net;  

      整個Form1窗體代碼如下:

      namespace BackgroundWorkerExample
      {
          public partial class Form1 : Form
          {
              public Form1()
              {
                  InitializeComponent();
                  backgroundWorker1.WorkerReportsProgress = true;
                  backgroundWorker1.WorkerSupportsCancellation = true;
                  btn_Stop.Enabled = false;
              }
      
              private void btn_Start_Click(object sender, EventArgs e)
              {
                  txt_Text.Text = "開始產生10000以內的隨機數(shù)……\n\n";
                  btn_Start.Enabled = false;
                  btn_Stop.Enabled = true;
                  //在后臺線程開始操作
                  backgroundWorker1.RunWorkerAsync();
              }
      
              private void btn_Stop_Click(object sender, EventArgs e)
              {
                  backgroundWorker1.CancelAsync();
                  btn_Stop.Enabled = false;
                  btn_Start.Enabled = true;
              }
      
              private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
              {
                  //不要直接使用組件實例名稱(backgroundWorker1),因為有多個BackgroundWorker時,
                  //直接使用會產生耦合問題,應該通過下面的轉換使用它
                  BackgroundWorker worker = sender as BackgroundWorker;
                  //下面的內容相當于線程要處理的內容。//注意:不要在此事件中和界面控件打交道
                  Random r = new Random();
                  int numCount = 0;
                  while (worker.CancellationPending == false)
                  {
                      int num = r.Next(0, 10000);
                      if (num % 5 == 0)
                      {
                          numCount++;
                          worker.ReportProgress(0, num);
                          Thread.Sleep(1000);
                      }
                  }
                  e.Result = numCount;
              }
      
              private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
              {
                  int num = (int)e.UserState;
                  txt_Text.Text += num + " ";
              }
      
              private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
              {
                  if (e.Error == null)
                      txt_Text.Text += "\n\n操作停止,共生產" + e.Result + "個能被5整除的隨機數(shù)";
                  else
                      txt_Text.Text += "\n操作過程中產生錯誤:" + e.Error;
      
              }
          }
      }
      

            該例子在 Backgroundworker 組件的輔助線程上隨機產生整數(shù),輔助線程運行DoWork事件處理程序,當產生能被5整除的整數(shù)時,使用ProgressChanged事件把整數(shù)顯示到窗體上。程序執(zhí)行到 RunWorkerAsync 方法時,將啟動后臺線程。 在Dowork事件中,如果應用程序沒有取消后臺操作,將不停的產生隨機整數(shù),然后判斷該整數(shù)能否被5整除,如果能被5整除,執(zhí)行work.ReportProgress方法來觸發(fā) ProgressChanged 事件,在 ProgressChanged 事件中與界面長須打交道,把生產的隨機整數(shù)顯示到窗體上。

      界面編譯后運行如圖:

       

      posted @ 2016-08-16 08:52  Dsw  閱讀(1089)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 久久99久久99精品免视看国产成人| 国产女人18毛片水真多1| 国产精品视频一品二区三| 蜜桃av一区二区高潮久久精品| 最新国产精品亚洲| 亚洲国产一区二区三区亚瑟| 亚洲va在线∨a天堂va欧美va| 亚洲一区二区三区自拍高清| 欧美国产日产一区二区| 国产精品福利中文字幕| 欧美成本人视频免费播放| 国产在线超清日本一本| 色丁香一区二区黑人巨大| 日韩人妻少妇一区二区三区| 国产精品无码素人福利不卡| 伊人狠狠色j香婷婷综合| 国产一区二区三区麻豆视频| 久久青青草原亚洲AV无码麻豆| 香蕉亚洲欧洲在线一区| 爆乳日韩尤物无码一区| 欧洲精品色在线观看| 个旧市| 久久久久噜噜噜亚洲熟女综合| www成人国产高清内射| 女人喷水高潮时的视频网站| 久久久精品波多野结衣av| 亚洲中文字幕综合小综合| 91精品国产午夜福利| 精品无码久久久久成人漫画| 日韩亚av无码一区二区三区| 国内自拍小视频在线看| 日韩av裸体在线播放| 聂荣县| 亚洲美免无码中文字幕在线| 2021国产精品视频网站| 亚洲高清 一区二区三区| 中文字幕乱妇无码av在线| 97在线视频人妻无码| 蜜臀精品一区二区三区四区| 99久久亚洲综合精品成人网 | 精品无码久久久久久尤物|