C#任务返回一个值

krt*_*tek 6 .net c# multithreading task

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

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

static int GenerateResult(int i)
{ 
return i; 
}
Run Code Online (Sandbox Code Playgroud)

最后Console.WriteLine(t); 这将返回:

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

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

Mar*_*uła 13

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

Console.WriteLine(t.Result);


ean*_*son 6

你需要使用t.Result.

例如

Console.WriteLine(t.t.Result);
Run Code Online (Sandbox Code Playgroud)

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

Task<int> t = Task<int>.Factory.StartNew(() => GenerateResult(2));
Run Code Online (Sandbox Code Playgroud)

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