LEO's DotNET Blog

技术 业务 = 企业应用软件

博客园 首页 新随笔 联系 订阅 管理
  45 Posts :: 0 Stories :: 102 Comments :: 2 Trackbacks

BackgroundWorker是vs2005自带的,以下代码实现异步修改TextBox的Text

 1 private void button2_Click(object sender, EventArgs e)
 2        {
 3            this.textBox1.Text = "start";
 4
 5            this.backgroundWorker1.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backgroundWorker1_RunWorkerCompleted);
 6            this.backgroundWorker1.RunWorkerAsync();            
 7        }
      
 8
 9        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
10        {
11            for (int i = 0; i < 3; i++)
12            {
13                for (int j = 0; j < 100000000; j++)
14                {
15                    j++;
16                    j--;
17                }

18                this.textBox1.Text = i.ToString();
19            }

20        }

21
22        private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
23        {
24            this.textBox1.Text = "complete";
25        }


 

posted on 2008-02-14 11:39 !LEO 阅读(248) 评论(2)  编辑 收藏 网摘

Feedback

#1楼 2008-02-14 12:59 无常      
纠正一点,
DoWork()是在非UI线程中执行的,不能修改UI控件属性,
this.textBox1.Text = i.ToString();
这一句是不合法的。

如果要显示进度,则可在
ProgressChanged()事件中写代码,
别忘了设置 backgroundWorker1.WorkerReportsProgress = true;

  回复  引用  查看    

#2楼[楼主] 2008-02-15 15:25 李冠聪      
又测试了一次,的确发生异常。但昨天测试如何能通过呢,奇怪。
感谢无常指教!

  回复  引用  查看    




发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1068563




相关文章:

相关链接: