国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

簡單使用BackgroundWorker創建多個線程的教程

2024-07-10 12:46:12
字體:
來源:轉載
供稿:網友

BackgroundWorker是一個非常不錯的線程控件,能避免界面假死,讓線程操作你想要做的事,它學習起來很簡單,但是能實現很強大的功能。發布這篇文章的目的是將最近學習到的共享出來,大家交流一下,當然我也是菜鳥,在這里你將學習到BackgroundWorker簡單使用,停止,暫停,繼續等操作,BackgroundWorker比起Thread和ThreadPool要簡單太多,為了更方便在實際應用中使用,我使用的是winform,沒有使用控制臺程序。

在UI界面里拖動一個button和richTextBox到界面。

我會從最簡單的開始,只有最簡單的代碼才會讓人有繼續學下去的欲望,下列代碼可以將1到999打印到richTextBox1控件上。

代碼如下:
private void button1_Click(object sender, EventArgs e)
 {
     //創建一個BackgroundWorker線程
     BackgroundWorker bw = new BackgroundWorker();
     //創建一個DoWork事件,指定bw_DoWork方法去做事
     bw.DoWork += new DoWorkEventHandler(bw_DoWork);
     //開始執行
     bw.RunWorkerAsync();
 }

 void bw_DoWork(object sender, DoWorkEventArgs e)
 {
     for (int i = 0; i < 1000; i++)
     {
         this.richTextBox1.Text += i + Environment.NewLine;
     }
 }

但是很不幸,以上代碼會報錯,報錯信息:線程間操作無效: 從不是創建控件“richTextBox1”的線程訪問它。

那么我們繼續改造代碼,讓數字顯示在richTextBox1控件上,并且讓richTextBox1焦點處于最低端。

代碼如下:
private void button1_Click(object sender, EventArgs e)
 {
     //創建一個BackgroundWorker線程
     BackgroundWorker bw = new BackgroundWorker();
     //創建一個DoWork事件,指定bw_DoWork方法去做事
     bw.DoWork += new DoWorkEventHandler(bw_DoWork);
     //開始執行
     bw.RunWorkerAsync();
 }

 void bw_DoWork(object sender, DoWorkEventArgs e)
 {
     for (int i = 0; i < 1000; i++)
     {
         this.Invoke((MethodInvoker)delegate
         {
             this.richTextBox1.Text += i + Environment.NewLine;
         });
     }
 }

 private void richTextBox1_TextChanged(object sender, EventArgs e)
 {
     RichTextBox textbox = (RichTextBox)sender;

     textbox.SelectionStart = textbox.Text.Length;

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 德保县| 丰都县| 滨州市| 布尔津县| 绥化市| 宜都市| 湘阴县| 绩溪县| 葫芦岛市| 江门市| 鲁甸县| 于田县| 深圳市| 东阿县| 丹阳市| 宝兴县| 新丰县| 斗六市| 济宁市| 沁阳市| 济阳县| 深水埗区| 江陵县| 仲巴县| 阜平县| 蒲城县| 瑞安市| 瓦房店市| 芦溪县| 宿松县| 乾安县| 肇州县| 河东区| 阳城县| 贺兰县| 方城县| 常德市| 通山县| 利辛县| 镇江市| 呼伦贝尔市|