J'ai donc eu un nouveau problème ...Vérificateur de proxy multithread C#
J'écris un proxychecker multithread dans C#. J'utilise BackgroundWorkers pour résoudre le problème du multithreading.
Mais j'ai des problèmes de coordination et d'affectation des proxys laissés en file d'attente aux travailleurs en cours d'exécution. Cela fonctionne la plupart du temps mais parfois aucun résultat ne revient, donc certains proxys sont «perdus» pendant le processus.
Cette liste représente la file d'attente et est remplie avec les identifiants des proxys dans un ListView.
private List<int> queue = new List<int>();
private int GetNextinQueue()
{
if(queue.Count > 0)
{
lock (lockqueue)
{
int temp = queue[0];
queue.Remove(temp);
return temp;
}
}
else
return -1;
}
est dessus de ma méthode pour obtenir la prochaine proxy dans la file d'attente, j'utilise l'instruction de verrouillage pour éviter que les conditions de course, mais je ne suis pas sûr si son assez ou si elle ralentit le processus, car il rend les autres threads attendez ... (lockqueue est un objet juste utilisé pour le verrouillage)
Donc ma question est, comment est-il possible que certains proxys ne sont pas vérifiés (même si le ping échoue le contrôle devrait retourner quelque chose, mais parfois il ya juste rien) et comment puis-je optimiser ce code pour la performance?
Voici le reste du code que je considère important pour cette question http://pastebin.com/iJduX82b
Si quelque chose manque juste écrire un commentaire
Merci :)
Merci, vraiment belle solution. Et merci à tous pour votre aide, j'apprécie énormément cela mais malheureusement je ne peux accepter qu'une seule réponse. Le problème avec les proxies "perdus" est résolu maintenant je pense. – Chilln