C# Task which returns a value

2019-02-22 05:19发布

问题:

I'm trying to run a function in a task but I'm doing something wrong. Heres an example:

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

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

In the end Console.WriteLine(t); This returns:

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

I want i to be 2. What am I doing wrong here? :/

回答1:

You are printing the task object that you created. For result, see .Result property:

Console.WriteLine(t.Result);



回答2:

You need to use t.Result.

For example

Console.WriteLine(t.t.Result);

Your code essentially looks like this:

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

And when you write Console.WriteLine(t); you are actually just printing the Task and not the integer. To be able to access the result you need to add .Result.