C#.NET中的线程与跨线程,如何从另一个线程更改ComboBox数据?我需要在我的应用程序中使用线程,但我不知道如何进行跨线程操作。我希望能够从另一个线程更改表单对象(在本例中为组合框)的文本,我收到错误消息:跨线程操作无效:控制“titlescomboBox”从创建线程以外的线程访问在。我真的不明白如何使用call和开始调用函数,所以我真的在寻找一个简单的例子和??解释,这样我就可以学习了。此外,任何初学者教程都会很棒,我找到了一些,但它们是如此不同,我不明白我需要做什么才能执行跨线程。这是代码://主线程。单击刷新按钮privatevoidrefreshButton_Click(objectsender,EventArgse){titlescomboBox.Items.Clear();线程t1=新线程(updateCombo);t1.开始();}//此函数使用rssData更新组合框privatevoidupdateCombo(){rssData=getRssData(channelTextBox.Text);//获取数据for(inti=0;i{MyCombo.Items.Add(something);})—或任何其他控件(例如表单),因为它们都是在主线程上创建的HTH抛出此异常是因为您试图访问在另一个线程上创建的控件成员。使用控件时,只能从创建控件的线程访问控件的成员。控件类可以通过提供InvokeRequeired属性帮助您了解创建的线程上的控件是否风化。因此,如果'control.InvokeRequeired'返回true,则说明您处于不同的线程中。帮助您Control支持Invoke和BeginInvoke方法,这些方法将处理控制主线程的方法执行。所以:如果您使用的是3.5及更高版本,我建议您使用EbenRoux在他的回答中显示的扩展方法。对于2.0://此函数使用rssData更新组合框privatevoidupdateCombo(){MethodInvokermethod=newMethodInvoker(delegate(){rssData=getRssData(channelTextBox.Text);//获取数据for(inti=0;i如果您使用的是C#2.0,请看一下从工作线程更新表单控件的最佳方法是什么?-它应该可以解决您的问题。以上是C#学习教程:C#中的线程和跨线程.NET,如何从另一个线程更改ComboBox数据?所有内容分享,如果对你有用,需要了解更多C#学习教程,希望大家多多关注---本文收集自网络且不代表立场,如涉及侵权,请点击右侧联系管理员删除,如需转载请注明出处: