我收到此错误,因为我正在尝试从最初未创建的线程更新我的列表框:
跨线程操作无效:从
以外的线程访问控制'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上找到的例子并没有帮助我。这些示例似乎只显示了如何更改标签文本,而不是清除列表框。
答案 0 :(得分:6)
您需要使用UI线程。要完成此任务,请使用:
private void UpdateHistory()
{
//tbHistory is a listbox
myForm.Invoke ((Action) (() =>tbHistory.Items.Clear()));
}
编辑:添加了缺少的括号,因为代码无法编译。