C#任务返回一个值

时间:2011-08-02 21:52:25

标签: c# .net multithreading task

我正在尝试在任务中运行一个函数,但我做错了。 下面是一个例子:

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]

我希望自己成为2岁。 我在这做错了什么? :/

2 个答案:

答案 0 :(得分:13)

您正在打印您创建的任务对象。有关结果,请参阅.Result属性:

Console.WriteLine(t.Result);

答案 1 :(得分:6)

您需要使用t.Result

例如

Console.WriteLine(t.t.Result);

您的代码基本上如下所示:

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

当你写Console.WriteLine(t);时,实际上只是打印Task而不是integer。为了能够访问结果,您需要添加.Result