C# Ping async with LINQ

Donnidonis

Commander
Registriert
Apr. 2009
Beiträge
2.679
Hey Leute,

wie im Titel beschrieben probiere ich per LINQ mehrere Pings parallel auszuführen.
Gegeben ist eine Liste mit mehreren Objekten, wobei diese jeweils eine Poperty IP-Adresse beinhalten.
Was ich nun vorhabe:
parallel an jede der IP-Adressen ein Ping durchführen und das Ergebnis in das zugehörige Objekt schreiben, zum Beispiel in die Property 'IsOnline'.
Nur daran verzweifle ich gerade. Meine bisherigen Ansätze:
Code:
var result = Task.WhenAll(_entries.Select(e => ));
Hier weiß ich nicht so recht was mein Argument sein soll was auf jedes 'e' ausgeführt werden soll.
Code:
var result = _entries.AsParallel().Select(e => new Ping().SendPingAsync(e.IpAddress)).ToList();
Das war meine nächste Idee, aber auch hier kann ich nicht direkt die Poperty IsOnline updaten.

Würde mich freuen wenn mir ein LINQ Experte hierbei helfen könnte. Ich weiß ich kann es in einzelne Methoden zerlegen und alles manuell machen, aber möchte gerne bei den LINQ Expressions mein Wissen erweitern.

Liebe Grüße,
der dödel =D

EDIT:
Code:
_entries.AsParallel().Select(e => e.IsOnline = _ping.Send(e.IpAddress).Status == IPStatus.Success);
Wie wäre es damit, sollte es das machen was ich möchte? :D Wobei mir das mit dem Task.WhenAll eigentlich besser gefällt, da weiß ich das erstmal alle beendet werden müssen etc.
 
Zuletzt bearbeitet:
Dann such mal auf Youtube nach "kenny pflug" und schau dir seine Vorlesungen an.

Was du hier brauchst sind Delegate, Anonyme Methoden und Lambdas. Diese kann du dann mit Linq einsetzten.

e => .... ist zb schon ein solches Lambda

Grüße
 
Zurück
Oben