当我在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); } }
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。