2011-08-02 36 views
6

我想在任务中运行一个函数,但我做错了什么。 下面有一个例子:C#任务返回值

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

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

在端Console.WriteLine(t); 这将返回:

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

我想i到是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