Un thread s'exécute en arrière-plan qui essaie périodiquement de mettre à jour un composant ListView, mais chaque fois qu'il tente d'obtenir une "opération Cross-thread non valide: Control 'dlList' accédé à partir d'un thread autre que le thread sur lequel il a été créé. " Erreur. J'ai utilisé un délégué pour essayer de résoudre ce problème mais cela ne règle pas le problème. Y at-il un problème avec mon code? J'ai également essayé Invoke au lieu de BeginInvoke mais le même problème.Passer un appel cross-thread à un 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];
}
}
}
Appelée via:
updateListItem(x.url, x.details);
Exactement où est levée l'exception? Pouvez-vous partager la pile d'appels de l'exception? –