C# 跨线程操作无效-listbox Clear语句

C# 跨线程操作无效-listbox Clear语句,c#,.net,multithreading,C#,.net,Multithreading,我之所以出现此错误,是因为我试图从一个不是最初创建列表框的线程更新列表框: 跨线程操作无效:从非线程访问控件“tbHistory” Thread t = new Thread(UpdateHistory); // Kick off a new thread t.Start(); private void UpdateHistory() { //tbHistory is a listbox tbHistory.Items.Clear(); } 有人能告诉我解决这个问题的代码吗

我之所以出现此错误,是因为我试图从一个不是最初创建列表框的线程更新列表框:

跨线程操作无效:从非线程访问控件“tbHistory”

Thread t = new Thread(UpdateHistory);          // Kick off a new thread
t.Start();

private void UpdateHistory()
{
//tbHistory is a listbox
tbHistory.Items.Clear();
}

有人能告诉我解决这个问题的代码吗?我知道我应该使用invoke,但我在谷歌上找到的例子对我没有帮助。这些示例似乎只显示如何更改标签文本,而不是清除列表框

您需要使用UI线程。要完成此操作,请使用:

private void UpdateHistory()
{
   //tbHistory is a listbox
   myForm.Invoke ((Action) (() =>tbHistory.Items.Clear()));
}

编辑:添加缺少的括号,因为代码无法编译。

您需要使用UI线程。要完成此操作,请使用:

private void UpdateHistory()
{
   //tbHistory is a listbox
   myForm.Invoke ((Action) (() =>tbHistory.Items.Clear()));
}
编辑:添加缺少的括号,因为代码无法编译