跨线程操作错误if(listBox1.InvokeRequired){listBox=newStringBuilder(this.listBox1.Text);这是c#中的代码,执行时会为listBox1生成Invalidcrossthreadoperation错误,listBox1在我的form中是一个listbox。请告诉我为什么?我也使用了invokeRequired方法,也没有改变列表框的内容。InvokeRequired只是告诉您需要Invoke才能有效访问元素。它不会使访问合法。您必须使用invoke方法将更新推送到适当的线程Actionupdate=()=>listbox=newStringBuilder(this.listBox1.Text);如果(listBox1.InvokeRequired){listBox1.Invoke(更新);}else{更新();InvokeRequired只是检查是否需要Invoke。您发现它是必需的,但没有调用Invoke!当InvokeRequired为false时,您的代码应运行委托voidSetListBoxDelegate();voidSetListBox(){if(!InvokeRequired){listBox=newStringBuilder(this.listBox1.Text);}elseInvoke(newSetListBoxDelegate(SetListBox));}编辑:查看MakingWindowsFormsThread-Safe以上就是C#学习教程:跨线程操作错误分享的全部内容。网络收藏不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
