2011-08-02 11 views
6

Estoy intentando ejecutar una función en una tarea pero estoy haciendo algo mal. Heres un ejemplo:C# Tarea que devuelve un valor

var t = Task<int>.Factory.StartNew(() => GenerateResult(2)); 

static int GenerateResult(int i) 
{ 
return i; 
} 

Al final Console.WriteLine(t); Esto devuelve:

System.Threading.Tasks.Task`1 [System.Int32]

Quiero i a ser 2. ¿Qué estoy haciendo mal aquí? :/

Respuesta

13

Está imprimiendo el objeto de tarea que creó. Para ello, ver .Result propiedad:

Console.WriteLine(t.Result);

+0

¡Dios mío, cómo no he visto esto! Gracias. – krtek

6

Es necesario utilizar t.Result.

Por ejemplo

Console.WriteLine(t.t.Result); 

Su código esencialmente se parece a esto:

Task<int> t = Task<int>.Factory.StartNew(() => GenerateResult(2)); 

Y cuando se escribe Console.WriteLine(t); en realidad se acaba la impresión de la Task y no integer. Para poder acceder al resultado, debe agregar .Result.

Cuestiones relacionadas