我有一个线程在后台周期性地尝试更新一个ListView组件,但每次它尝试我得到一个“跨线程操作无效:控制'dlList'从创建线程以外的线程访问。“错误。我已经使用委托来尝试解决这个问题,但它没有解决问题。我的代码有问题吗?我也尝试调用,而不是BeginInvoke,但同样的问题。跨线程调用ListView
delegate void updateListItemDelegate(string tag, ListViewItem lv);
private void updateListItem(string tag, ListViewItem lv)
{
if (this.dlList.InvokeRequired)
{
this.dlList.BeginInvoke(new updateListItemDelegate(updateListItem),tag,lv);
return;
}
else
{
int index = -1;
foreach (ListViewItem x in dlList.Items)
{
if (x.Tag.ToString() == tag)
index = x.Index;
}
if (index != -1)
{
dlList.Items[index].SubItems[1] = lv.SubItems[1];
dlList.Items[index].SubItems[3] = lv.SubItems[3];
}
}
}
通过调用:
updateListItem(x.url, x.details);
到底抛出的异常究竟在哪里?你能从异常中分享调用堆栈吗? – 2009-12-03 06:47:28