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

fra*_*Xis 0 .net c# multithreading

我收到此错误,因为我试图从最初未创建的线程更新我的列表框:

跨线程操作无效:从除以外的线程访问控制'tbHistory'

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

private void UpdateHistory()
{
//tbHistory is a listbox
tbHistory.Items.Clear();
}
Run Code Online (Sandbox Code Playgroud)

有人可以给我代码来解决这个问题吗?我知道我应该使用invoke,但我在Google上找到的例子并没有帮助我.这些示例似乎只显示了如何更改标签文本,而不是清除列表框.

age*_*t-j 6

您需要使用UI线程.要完成此任务,请使用:

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

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