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

时间:2011-06-30 22:45:36

标签: 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();
}

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

1 个答案:

答案 0 :(得分:6)

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

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

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