当我在AddListBoxItem函数中使用invoke时,如下所示,软件变得无法响应并冻结,但如果我使用BeginInvoke它可以工作.为什么会这样?
visual studio 2010,C#4.0
private void button2_Click(object sender,EventArgs e) { var watch = Stopwatch.StartNew(); Parallel.For(2,20,(i) => { var result = SumRootN(i); AddListBoxItem("root " + i + " : " + result); }); AddListBoxItem(watch.ElapsedMilliseconds.ToString()); } private delegate void AddListBoxItemDelegate(object item); private void AddListBoxItem(object item) { if (this.listBox1.Invokerequired) { this.listBox1.Invoke(new AddListBoxItemDelegate(this.AddListBoxItem),item); } else { this.listBox1.Items.Add(item); } }