Aufgabe.Laufen und Func<>
Wie kann ich eine Aufgabe auszuführen, die return-Wert und nimmt einen parameter? Ich sehe, dass es eine überladene Methode Task.Run<TResult>(Func<TResult>)
aber wie kann ich ein parameter übergeben es?
InformationsquelleAutor zavolokas | 2012-10-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Func<TResult>
braucht keine parameter. In der Regel würden Sie erfassen die parameter mit Hilfe eines lambda-Ausdrucks statt. Zum Beispiel:Hier
text
ist ein aufgenommene variable... also auch wenn man nur die Schaffung einesFunc<int>
es mit die parameter der Methode.Vorausgesetzt, Sie ändern nicht den Wert des
text
später, sieht es in Ordnung für mich.Ich glaube, ich bin einfach nur vergessen, einige wirklich grundlegende Dinge nennen... wenn ich DoSomething mehrmals mit verschiedenen Werten für text, dann wird eine Kopie von jeder version im Speicher für jeden Anruf, richtig?
also die lambda wäre nicht möglich, verwenden Sie den Wert der text, der gesendet wurde, um einen bestimmten Aufruf von DoSomething?
Es wird eine andere Instanz von einem compiler generierte Klasse erstellt für jeden Aufruf. Also keine, die Anrufe werden nicht sehen, jede andere
text
Werte.InformationsquelleAutor Jon Skeet
Könnten Sie die Aufgabe.Factory.StartNew () - überladungen, um eine "state" - Objekt enthält alle Parameter, die Sie möchten verwenden Sie. Hier ist ein sehr einfaches Beispiel übergabe einer NameValueCollection, aber man könnte natürlich passieren in jeder Art von Objekt, das Sie wollte.
InformationsquelleAutor Mike Parkhill