Hallo zusammen
Ich bin's wieder und traue mich mit meinem nächsten Problem.
Ich möchte ein TPL-Programm schreiben mit Übergabe eines Parameters, d.h. der Task soll Daten mitbekommen (zieht nur die Wurzel einer übergebenen Zahl).
Lt. Konstruktor funktioniert das in seiner Basisform so:
C#-Quelltext
1:
| public Task(Action<Object> action,Object state) |
Jetzt versuche ich,
genau diesen Konstruktor hinzubekommen, aber leider ohne Erfolg.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| class Program { static void Main(string[] args) { Action<double> Sub;
double Zahl = 144; Sub = SubTask; Task TaskObj = new Task(Sub, Zahl); TaskObj.Start(); TaskObj.Wait(); }
static void SubTask(double Zahl) { Console.Write("\n Start Sub-Task\n"); Console.Write("\n\t Zahl= {0} Wurzel= {1}", Zahl, Math.Sqrt((double)Zahl)); Console.Write("\n Ende Sub-Task\n"); Console.Write("\n\n"); } } |
2 Fehlermeldungen bei zeile 10:
1. Argument 1: Konvertierung von System.Action<double> in System.Action nicht möglich.
2. Argument 2: Konvertierung von double in System.Threading.CancellationToken nicht möglich.
Hinweis:
Mit Anwendung eines Lamba-Ausdruckes oder Task.Run funktioniert alles. Aber ich wollte das Beispiel auch wie oben gezeigt hinbekommen, also mit explizit definiertem Action-Objekt. Geht das überhaupt?
Gruss Luccas
Moderiert von Th69: B- durch C#-Tags ersetzt
Moderiert von Th69: Code- durch C#-Tags ersetzt