Control .BeginInvoke 与Invoke

 今天在网上看到一篇 文章,然后照着其实现 了代码,但是好像还是没有明白这两个方法的区别

        private int Max_Item_Count=1000;
        object obj = new object();

private void button2_Click(object sender, EventArgs e)
        {
            new Thread((ThreadStart)(delegate()
                {
                    for (int i = 0; i < Max_Item_Count; )
                    {            //  此处警惕值类型装箱造成的"性能陷阱"           
                        listView1.BeginInvoke((MethodInvoker)delegate()// 换为Invoke ,那么Max_Item_Count将顺序添加到列表 中,但是用BeginInvoke 则是乱的。
                        {
                            lock (obj)
                            {
                                listView1.Items.Add(new ListViewItem(new string[] { i.ToString(), string.Format("This is No.{0} item", i.ToString()) }));
                            }

                        });
                        lock (obj)
                        {
                            i+=1;
                        }
                    };
                })).Start();
        }

http://www.cnblogs.com/smartls/archive/2011/04/08/2008981.html

 

不过二者的执行 效率也有一定的差距,所以结果不一样。有时间得认真 地学学
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值