У меня есть поток, работающий в фоновом режиме, который периодически пытается обновить компонент ListView, но каждый раз, когда он пытается получить «Операция с несколькими потоками недопустима: доступ к элементу управления dlList осуществляется из потока, отличного от потока, который он был создан на ". ошибка. Я использовал делегата, чтобы попытаться решить эту проблему, но это не решает проблему. Что-то не так с моим кодом? Я также пробовал Invoke вместо BeginInvoke, но та же проблема.
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);