C# 如何从线程内部更新列表框?

C# 如何从线程内部更新列表框?,c#,multithreading,C#,Multithreading,我的代码中出现错误: 跨线程操作无效:从创建控件“listBox1”的线程以外的线程访问控件“listBox1” 代码: 在DOT-NET中,不能从用户创建的线程修改UI元素。只允许主线程(创建控件的主线程)修改它。这意味着,在新线程中不能更新列表框条目 还有其他策略,如BackgroundWorker。请查看@Rotem发布的链接,以及google up BackgroundWorker 更新:如果您按照链接并决定使用ListBox1.Invoke()方式,那么我建议使用BeginInvoke

我的代码中出现错误:

跨线程操作无效:从创建控件“listBox1”的线程以外的线程访问控件“listBox1”

代码:


在DOT-NET中,不能从用户创建的线程修改UI元素。只允许主线程(创建控件的主线程)修改它。这意味着,在新线程中不能更新列表框条目

还有其他策略,如
BackgroundWorker
。请查看@Rotem发布的链接,以及google up BackgroundWorker


更新:如果您按照链接并决定使用
ListBox1.Invoke()
方式,那么我建议使用
BeginInvoke
代替
Invoke
将列表框更新放在这一点上

this.Invoke(new MethodInvoker(delegate()
{
 //stuff
}));
this.Invoke(new MethodInvoker(delegate()
{
 //stuff
}));