I want to use this Task<> constructor. I can't seem to get the sntax right can someone correct my code.
Also, am I right thinking that if a Task is constructed that way, it's not started?
The constructor I think I need:
Task<TResult>(Func<Object, TResult>, Object)
My code erroring:
Argument 1: cannot convert from 'method group' to 'System.Func<object,int>
'
static void Main(string[] args)
{
var t = new Task<int>(GetIntAsync, "3"); //error is on this line
...
}
static async Task<int> GetIntAsync(string callerThreadId)
{
...
return someInt;
}
var t = new Task<int>(() => GetIntAsync("3").Result);
Or
var t = new Task<int>((ob) => GetIntAsync((string) ob).Result, "3");
To avoid using lambda, you need to write a static method like this:
private static int GetInt(object state)
{
return GetIntAsync(((string) state)).Result;
}
And then:
var t = new Task<int>(GetInt, "3");
//creating task
var yourTask = Task<int>.Factory.StartNew(() => GetIntAsync("3").Result);
//...
int result = yourTask.Result;
UPDATE:
Yes, unfortunately it does start the task. Use code as mentioned above instead:
//creating task
var yourTask = new Task<int>(() => GetIntAsync("3").Result);
//...
// call task when you want
int result = yourTask.Start();