今天在网上看到一篇 文章,然后照着其实现 了代码,但是好像还是没有明白这两个方法的区别
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
不过二者的执行 效率也有一定的差距,所以结果不一样。有时间得认真 地学学