Hallo Leute,
ich habe eine große Liste mit IP-Adressen um diese auf Ihre Verfügbarkeit zu testen, Pinge ich diese nacheinander an.
Da jedoch die Liste mehr als 600 Einträge hat dauert dieser Vorgang sehr lange.
Um die Bearbeitungszeit zu verkürzen wollte ich die Funktion in mehreren Threads ausführen. Das Problem war jedoch, dass die
Funktion zwar mehrmals aufgerufen wurde, aber von den Threads die selbe IP bearbeitet wurde. Ich habe mal schnell die Logik
zusammen geschrieben, da ich zurzeit keinen Zugang zu meinem Code habe.
Ich wäre über Lösungsvorschläge sehr dankbar.
Code:
Button_Click Logik
//Aktuell mit einem Thread
Thread th = new Thread(new ThreadStart(checkProxy));
th.start();
//Erster Versuch, welcher jedoch nicht das gewünschte Ergebniss lieferte.
Thread th = new Thread(new ThreadStart(checkProxy));
Thread t = new Thread(new ThreadStart(checkProxy));
th.start();
t.start();
checkProxy Logik:
int Count = Listbox.Items.Count();
int Curr = 0;
int Timeout = 5000;
while(Curr < Count)
{
string IP = (string)Listbox.Items[Curr];
Ping p = new Ping();
PingReply pr = p.send(IP, Timeout);
if(pr.status == IPStatus.Success) {
//Hier wird die IP in 2. Listbox eingefügt
updateBox(Listbox2, IP)
//Hier wird die IP aus der 1. Listbox entfernt
deleteItem(Listbox, IP)
} else {
//Hier wird die IP aus der 1. Listbox entfernt
deleteItem(Listbox, IP)
}
Count = Listbox.Items.Count()
Curr++;
}
Grade erst gemerkt das ich das ganze im falschen Bereich gepostet habe. Wäre gut wenn jemand das nach .Net verschieben könnte. Danke.