Jeg er ved at lave en applikation som skal kalde X antal hosts og returnere nogle værdier som så vises i en DataGridView.
I kolonne index 0 af datagridview'en indtaster man ip/hostname for den/de hosts man vil query. Den del fungerer egentlig fint og jeg modtager værdier, får opdateret de andre kolonner på hver række med værdierne osv.
Men!.. Formen "stener" jo imens programmet kører, hvorfor jeg overvejede at smide "DoStuff()" i en backgroundworker. Men så vil de jo også kun køre 1 ad gangen og vente på hinanden i den samme worker.
Toppen ville vel være dynamisk at starte en tråd pr. row i DataGridView uanset hvor mange der er (eller måske med max-threads) som repræsenterer DoStuff() for hver hosts samtidig. Men dét har jeg ingen idé om hvordan gøres, har forsøgt at Google det, men fattede hat..
Jeg er lidt blank på det.. Du får lige lidt kode så du kan se hvad jeg gør.
Eksempel for pingtider, pinger jeg hvert sekund med en timer:
public int DoPing(string host) { int result;
if (!IsIPv4(host)) result = -1;
Ping pingSender = new Ping(); PingOptions options = new PingOptions(); options.DontFragment = true;
// Create a buffer of 32 bytes of data to be transmitted. string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; byte[] buffer = Encoding.ASCII.GetBytes(data); int timeout = 5000; PingReply reply = pingSender.Send(host, timeout, buffer, options); if (reply.Status == IPStatus.Success) { result = Convert.ToInt32(reply.RoundtripTime); } else { result = -1; }
return result; }
public void ShowResult(string host, int ms) { for (int i = 0; i < dgview.RowCount; i++) { if (dgview[0, i].Value != null && dgview[0, i].Value.ToString() == host) { dgview[1, i].Value = ms + " ms"; if (ms < 0) dgview.Rows[i].DefaultCellStyle.BackColor = Color.Red; else dgview.Rows[i].DefaultCellStyle.BackColor = Color.White; } } }
public void GoPing() { int latency = 0; for (int i = 0; i < dgview.RowCount; i++) { if (dgview[0, i].Value != null) { latency = DoPing(dgview[0, i].Value.ToString()); ShowResult(dgview[0, i].Value.ToString(), latency); } } }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.