.NET并行计算和并发3.2-多线程调用Invoke

以下这个例子是用一个后台线程执行计算逻辑,这样不影响前台界面操作,也就是说

可以在前台UI界面执行其他操作。

重点是新线程中,调用了一个委托方法,这个方法是需要填充数据到前台控件,因为

前台控件是在原来的线程中创建的,所以在新线程中需要调用Invoke方法,实时的展示

后台逻辑的计算进度。

 

代码如下:

  1  public partial class Form1 : Form
  2     {
  3         private delegate  void mydelegate(long j);
  4         private mydelegate  dele;
  5         public Form1()
  6         {
  7             InitializeComponent();
  8             dele += new mydelegate(delegateMethod);
  9         }
 10 
 11         private void delegateMethod(long j)
 12         {
 13             this.textBox1.Text = j.ToString();
 14         }
 15 
 16         private void button1_Click(object sender, EventArgs e)
 17         {
 18             Thread thd = new Thread(threadMethod);
 19             thd.Start();
 20         }
 21 
 22         private void threadMethod()
 23         {
 24             long j = 0;
 25             for (int i = 0; i < 1e10; i++)
 26             {
 27                 j++;
 28                 if (j%1000 == 0)
 29                 {
 30                     //调用Invoke方法后,会在原来的创建textbox1的线程中执行delegateMethod方法。
 31                     this.Invoke(dele,j);
 32                 }
 33             }
 34         }
 35     }
 36 
View Code

1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值