2011-08-02 15 views
6

Próbuję uruchomić funkcję w zadaniu, ale robię coś nie tak. Heres przykład:C# Zadanie, które zwraca wartość

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

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

W końcu Console.WriteLine(t); ta zwraca:

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

że chce I być 2. Co ja tu robię źle? :/

Odpowiedz

13

Drukujesz obiekt zadania, który utworzyłeś. Na skutek patrz .Result właściwość:

Console.WriteLine(t.Result);

+0

O mój boże, jak tego nie widziałem! Dzięki. – krtek

6

Musisz użyć t.Result.

Na przykład

Console.WriteLine(t.t.Result); 

Kod zasadniczo wygląda następująco:

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

A kiedy piszesz Console.WriteLine(t); są faktycznie tylko drukowanie Task a nie integer. Aby uzyskać dostęp do wyniku, musisz dodać .Result.

Powiązane problemy