Laden...

Wie kann ich einen Parameter an einen Task übergeben?

Erstellt von visionmaster vor 3 Jahren Letzter Beitrag vor 3 Jahren 855 Views
V
visionmaster Themenstarter:in
77 Beiträge seit 2009
vor 3 Jahren
Wie kann ich einen Parameter an einen Task übergeben?

Guten Morgen.
ich vermute, dass es jetzt sehr kritische Antworten geben wird - so in der Art "Google doch bitte erstmal..." - aber ich versichere, dass ich das alles schon gemacht habe.
Ich versuche mich ggw. etwas an der parallelen Arbeit mittels Tasks. Dabei suche ich händeringend nach einem möglichst einfachen(!!) Beispiel, wie ich eine Task starten kann, der einen Parameter mitgebe und die einen solchen zurückgibt. Beispiele gibt es viele. Aber alle sind für meine wohl triviale Anwednung für mich nicht adaptierbar. Geht sowas auch ohne Lamda-Ausdrücke? Wenn nicht, wie muss ich das schreiben?
Ich bekomme es einfach nicht hin;-(

Was passieren soll:

private string BeispielMethode (string name) { return name + "123";}
Task<string> T1 = Task<string>.Factory.StartNew( ???  BeispielMethode("Otto") ????);
string txt = T1.Result;

Was bitte muss ich richtig "StartNew" übergeben?
Falls mir hier jemand helfen würde, wäre ich sehr dankbar.

16.807 Beiträge seit 2008
vor 3 Jahren

Die Frage lässt leider schon zu denken, dass Du Dich mit dem Konzept von Tasks nicht soooo sehr hast beschäftigt.

Die wohl einfachste Methodensignatur ist:

public async Task<string> GetName(string name)

Ansonsten sei Dir gesagt, dass Tasks eine Abstraktionsform für das asynchrone Arbeit von Aufgaben ist - das hat erst mal mit Parallelität nichts zutun.
Für solche Dinge gibt es aber durchaus schon existierende Pattern. Da aber nicht wirklich ersichtlich ist, was Du machen willst (wirklich Parallelität, der vermischt Du hier doch was?) kann man aktuell wenig helfen.

Bei Deiner sehr intensiven Recherche nach Tasks ist Dir auch bestimmt aufgefallen, dass .Result ein Pitfall ist; daher verlinke ich das nicht - haste ja sicher schon gefunden 😃

Letzten Endes wirst Du nicht drum herum kommen, dass Du Dich mit Tasks und dem async/await Pattern grundlegend beschäftigst.
Das ist eine riesen Welt mit vielen Anwendungsmöglichkeiten und enormen Potential - aber eben auch mit Fallstricken.
Parallel Processing, Concurrency, and Async Programming in .NET

5.657 Beiträge seit 2006
vor 3 Jahren

Die einfachste Möglichkeit, etwas _parallel _auszuführen ist Parallel.ForEach: How to: Write a simple Parallel.ForEach loop

Weeks of programming can save you hours of planning