2012-07-04 12 views
11

Więc próbuję nauczyć się programować z zadań, a ja robię ćwiczenia:Threading.Tasks.Task”nie zawierają definicji dla«wynik»

public static int ReturnFirstResult(Func<int>[] funcs) 
{ 
     Task[] tasks = new Task[funcs.Length]; 
     for (int i = 0; i < funcs.Length; i++) 
     { 
      tasks[i] = CreatingTask(funcs[i]); 
     } 
     return Task<int>.Factory.ContinueWhenAny(tasks, (firstTask) => 
                  { 
                   Console.WriteLine(firstTask.Result); 
                   return ***????***; 
                  }).***Result***; 
} 
private static Task CreatingTask(Func<int> func) 
{ 
     return Task<int>.Factory.StartNew(() => { return func.Invoke(); }); 
} 

jestem dając tablica Funcs do uruchomienia, ideia ma zwrócić wynik pierwszego, który został zrobiony. Problem polega na tym, że pole Wynik nie jest dostępne ...

Czego tu mi brakuje?

Odpowiedz

23

Wracasz Task od sposobu CreatingTask - trzeba powrócić Task<int>, a następnie zmień tasks być Task<int>[] zamiast Task[].

Zasadniczo Task reprezentuje zadanie, które nie daje wyniku - podczas gdy Task<T> reprezentuje zadanie powodujące wynik typu T. W twoim przypadku wszystko w całym kodzie zwraca int, więc wszędzie potrzebujesz Task<int>.

+0

Dziękuję Jon, teraz mam to :) – RSort

Powiązane problemy