以线程安全的方式设置WinForm窗体控件的属性

在多线程的WinForm应用中,非UI线程无法直接更新UI控件。通过反射和Control.Invoke方法,可以在安全的环境中改变控件如textbox的属性。示例代码展示了如何在不同线程中更新文本框的值。

以线程安全的方式设置WinForm窗体控件的属性。

(修改为利用反射,设置控件的属性值。)

 

在进行多线程环境下的WinForm程序设计时,工作线程执行过程中,经常会需要更新窗体控件的状态,比如显示进度、提示信息等。而在非UI线程中,是不能直接访问UI线程所创建的窗体控件的。

Control.Invoke (Delegate, Object[])  提供了在拥有Control底层窗体句柄的线程上执行代理的途径。

 

下面这个例子,演示了在多线程中设置文本框的值。

在窗体上放置一个文本框textBox1。放置两个按钮:btnStart用于启动多个线程设置文本框的值,btnStop用于停止这些线程。

 

 

窗体后台代码如下:

 

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Windows.Forms;
  8. using System.Threading;
  9. namespace WindowsApplication1
  10. {
  11.     public partial class FormSafeTextBox : Form
  12.     {
  13.         public FormSafeTextBox()
  14.         {
  15.    &nbs
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值