Ho un'applicazione che esegue il ping di ogni possibile IP sulla subnet locale per compilare un elenco di indirizzi IP reattivi. Attualmente esegue il ping di tutti i 255 uno alla volta. È possibile convertire questa app per utilizzare più thread per aumentare la velocità eseguendo il ping di più di uno alla volta? Sono nuovo del concetto di più thread e penso che questo sia un buon modo per imparare (finché è possibile, naturalmente).Convertire l'applicazione Ping nella versione con multithreading per aumentare la velocità - C#
inoltre, qualsiasi miglioramento stilistico su cui puoi educarmi sarebbe anche utile.
grazie in anticipo
Ecco il metodo ping corrente in un evento backgroundWorker1_DoWork.
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
count = 0;
for (int i = 1; i < 255; i++)
{
Ping ping = new Ping();
PingReply pingreply = ping.Send(IPAddress.Parse(locip[0] + "." + locip[1] + "." + locip[2] + "." + i));
count += 1;
if (pingreply.Status == IPStatus.Success)
{
status = "o";
repAddress = pingreply.Address.ToString(); ;
repRoundtrip = pingreply.RoundtripTime.ToString();
repTTL = pingreply.Options.Ttl.ToString();
repBuffer = pingreply.Buffer.Length.ToString();
string[] lineBuffer = { status, repAddress, repRoundtrip, repTTL, repBuffer };
ipList.Rows.Add(lineBuffer);
}
progressBar.Invoke(new MethodInvoker(UpdateProgressBarByOne));
progressStatus.Text = ("Pinging IP " + count + " of 254");
}
button1.Enabled = true;
progressBar.Invoke(new MethodInvoker(ResetProgressBar));
}
Sono sicuro che questo ha senso, non ho idea di cosa dice, lol. Scusate se sono un rimedio, questa soluzione è finita in testa, il che probabilmente significa che anche la mia domanda è finita. – user48202
come passare un argomento durante il richiamo di un metodo come questo ipList.Invoke (new MethodInvoker (UpdateIpList (lineBuffer))); Continua a dirmi "UpdateIpList (lineBuffer)" non è un metodo. – user48202
I moduli e i thread di Windows non sono facili da fare. stessa cosa con la concorrenza, ci vuole un po 'di apprendimento per farlo bene. Consiglio vivamente di "Programmare Visual C# 2008 la libreria di classi base" che ha una buona intro introduzione (e anche tutte le parti buone del framework). – Spence