Ich möchte innerhalb einer Funktion eine benannte Lambda-Funktion erstellen, so dass ich es später in der gleichen Funktion wiederholt aufrufen kann.benannt async Lambda-Funktion
ich verwendet, um dieses synchron mit
Func<string, bool> pingable = (url) => return pingtest(url);
aber in diesem Fall habe ich ohne Aufgaben/tun möchten die pingable Funktion als eine Aufgabe nennen, so würde ich eine Aufgabe Rückgabetyp benötigen.
Hier ist ich stecken.
Für alle unten, erhalte ich kompilieren Fehler:
* Func<string, Task<bool>> pingable = (input) => { return pingtest(url); };
* Task<bool> pingable = new Task<bool>((input) => { return pingtest(url); });
ich normalerweise obwohl die Funktion erklären kann, aber dann kann ich es nicht als Aufgabe nennen:
Func<string, bool> pingable = (input) => { return pingtest(url); };
var tasks = new List<Task>();
* tasks.Add(async new Task(ping("google.de")));
die Linien All I habe mit einem * Fehlercode erzeugt.
http://dotnetcodr.com/2014/01/17/getting-a-return-value-from-a-task-with-c/ scheint einen Hinweis auf eine Lösung zu haben, aber die Probe dort nicht für nicht angegebene Eingabeparameter zulassen. (Probe von dort entnommen und vereinfachen :)
Task<int> task = new Task<int>(obj =>
{
return obj + 1;
}, 300);
Wie erstellen und den Namen Task-Lambda-Ausdrücke in C# anrufen, und ich mag sie auf einer Funktion erklären, anstatt Klassenstufe.
Ich möchte das Named Lambda, um es mehrmals zu nennen (mehrere URLs in diesem Fall).
bearbeiten/aktualisieren, da Sie für Code gefragt:
Func<string, Task<bool>> ping = url => Task.Run(() =>
{
try
{
Ping pinger = new Ping();
PingReply reply = pinger.Send(url);
return reply.Status == IPStatus.Success;
}
catch (Exception)
{
return false;
}
});
var tasks = new List<Task>();
tasks.Add(ping("andreas-reiff.de"));
tasks.Add(ping("google.de"));
Task.WaitAll(tasks.ToArray());
bool online = tasks.Select(task => ((Task<bool>)task).Result).Contains(true);
Diese bereits Verwendung der Lösung macht hier vorgeschlagen.
wie sieht 'pingtest' aus? – i3arnon
Es ist hier nur eine Kurzform für was ich einfügen möchte. Ich werde es in einer Bearbeitung hinzufügen, kombiniert mit Ihrer Lösung in einer Minute. –