我有一個線程在後臺週期性地嘗試更新一個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