使跨线程操作无效.tabControl1.TabPages[strTabToRemove];tp.Controls.Remove(这个);TaskBarRef.tabControl1.TabPages.Remove(tp);我试图使用上面的代码关闭Windows应用程序的tabcontrol中的选项卡,但出现错误:无效的线程操作。如何解决这个问题?您只能从主线程更改WinForm控件。您需要检查控件上的InvokeRequired是否为真,然后根据需要调用该方法。你可以做这样的事情来让它工作:返回;}TabPagetp=TaskBarRef.tabControl1.TabPages[strTabToRemove];tp.Controls.Remove(这个);TaskBarRef.tabControl1.TabPages.Remove(tp);}使用invoke调用,因为您正在使用另一个线程访问GUI线程this.Invoke((MethodInvoker)delegate(){CheckUnusedTabs("");});使用线程和UI控件时,在winforms中需要使用InvokeRequired来改变控件。编辑。添加了一个示例。表单,带有按钮和标签。尝试privatevoidbutton2_Click(objectsender,EventArgse){Threadthread=newThread(UpdateProcess);线程。开始();}privatevoidSetLabelText(stringval){label1.Text=val;}委托voidm_SetLabel(stringval);privatevoidUpdateProcess(){inti=0;while(true){if(label1.InvokeRequired){m_SetLabelsetLabel=SetLabelText;调用(setLabel,i.ToString());}elselabel1.Text=i.ToString();我++;线程.睡眠(500);}}跨线程无效异常是由于从主线程以外的线程访问UI控件。请参考http://helpprogramming.blogspot.com/2011/10/invalid-cross-thread-operation.html设置如下变量:以上是C#学习教程:使跨线程操作失效的全部内容。有用,需要多了解C#学习教程,希望大家多多关注—CheckIllegalCrossThreadValidation=false本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
