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

本文关键字:Clear 语句 -listbox 无效 线程 操作 | 更新日期: 2023-09-27 18:00:44

我收到这个错误,因为我试图从一个最初没有创建列表框的线程更新列表框:

跨线程操作无效:从以外的线程访问控件"tbHistory"

Thread t = new Thread(UpdateHistory);          // Kick off a new thread
t.Start();
private void UpdateHistory()
{
//tbHistory is a listbox
tbHistory.Items.Clear();
}

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

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

您需要使用UI线程。要做到这一点,请使用:

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

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