跨线程操作错误

2024-03-18

      if (listBox1.InvokeRequired)
       {
           listBox = new StringBuilder(this.listBox1.Text);
       }

这是 c# 中的代码,执行时会对 listBox1 产生无效的跨线程操作错误,listBox1 是我表单中的列表框。 你们能告诉我为什么吗? 我也在使用 invokeRequired 方法,并且也没有更改列表框的内容。


InvokeRequired 仅告诉您需要调用才能有效访问该元素。它并不使访问合法。您必须使用invoke方法将更新推送到适当的线程

Action update = () => listbox = new StringBuilder(this.listBox1.Text);
if (listBox1.InvokeRequired) {
  listBox1.Invoke(update);
} else {
  update();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

跨线程操作错误 的相关文章

随机推荐