2012-07-04 25 views
11

así que estoy tratando de aprender a programar con el Grupo de y estoy haciendo un ejercicio:Threading.Tasks.Task' no contiene una definición de 'resultado'

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(); }); 
} 

estoy dando una matriz de Funcs para ejecutar, la ideia es devolver el resultado de la primera función que se hizo. El problema es que el campo Resultado no está disponible ...

¿Qué me falta aquí?

Respuesta

23

usted está volviendo Task del método CreatingTask - tiene que volver Task<int>, y luego cambiar tasks ser Task<int>[] en lugar de Task[].

Básicamente, Task representa una tarea que no produce un resultado, mientras que Task<T> representa una tarea que produce un resultado del tipo T. En su caso, todo a lo largo de su código devuelve int, por lo que necesita Task<int> en todas partes.

+0

Gracias Jon, ahora lo tengo :) – RSort

Cuestiones relacionadas