L'erreur exacte:Index hors exception Plage lors de la création d'une tâche
Index was out of range. Must be non-negative and less than the size of the collection.
J'ai des tableaux d'index et les listes d'innombrables fois. J'ai utilisé des boucles avec des tableaux et des listes d'innombrables fois. Les données sont là, ça marche. Sauf quand j'essaye de créer une tâche pour ma fonction. Rappelez-vous, j'ai réussi cela avec une boucle foreach pour une fonction similaire; cette nouvelle nécessite deux arguments, donc je ne peux pas utiliser correctement une boucle foreach. Au moins, je ne pense pas que je peux.
Voici le code erroné:
if (addressList != null) {
textBox1.Text += ("Address List Length: " + addressList.Count + Environment.NewLine);
for (int i = 0; i < addressList.Count; i++) {
textBox1.Text += ("Task for " + addressList[i] + ":" + portList[i] + " initiated." + Environment.NewLine);
Task.Factory.StartNew(() => PingTaskAdapted(addressList[i], portList[i]));
}
}
else textBox1.Text = ("No IPs have been added.");
En supposant addressList[0]
est google.com et portList[0]
est 80, Sortie:
Address List Length: 1
Task for google.com:80 initiated.
puis rupture du programme, avec Visual Studio me disant que, à PingTaskAdapted() J'appelle un index qui est hors de portée, quand il a littéralement imprimé les index en question, parce qu'ils existent.
Et juste pour être clair, si j'appelle PingTaskAdapted(addressList[0], pingList[0]);
cela fonctionne sans aucun problème.
Vous devez utiliser 'Enumerable.Zip'. – Alexander