2011-08-02 9 views
6

タスクで関数を実行しようとしていますが、何か問題があります。 は、相続人の例:エンドConsole.WriteLine(t); これでC#値を返すタスク

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

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

返します。私は私がしたい

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

2. 私はここで何が間違っていますか? :/

答えて

13

作成したタスクオブジェクトを印刷しています。結果については、.Resultプロパティを参照してください。

Console.WriteLine(t.Result);

+0

ああ私の神様、どうして私はこれを見ませんでしたか?おかげさまで – krtek

6

あなたはt.Resultを使用する必要があります。例えば

Console.WriteLine(t.t.Result); 

あなたのコードは、基本的に次のようになります。

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

そして、あなたはConsole.WriteLine(t);を書くとき、あなたは実際にはTaskないintegerを印刷しています。結果にアクセスするには、.Resultを追加する必要があります。