如何构建一个任务而不启动它?

我想使用这个Task 构造函数 。 我似乎无法得到正确的sntax可以有人纠正我的代码。

另外,我是否正确地认为如果以这种方式构建任务,它是不是已经开始了?

我认为我需要的构造函数:

Task(Func, Object) 

我的代码错误:

参数1:无法从’方法组’转换为’ System.Func

 static void Main(string[] args) { var t = new Task(GetIntAsync, "3"); //error is on this line ... } static async Task GetIntAsync(string callerThreadId) { ... return someInt; } 

 var t = new Task(() => GetIntAsync("3").Result); 

要么

 var t = new Task((ob) => GetIntAsync((string) ob).Result, "3"); 

为了避免使用lambda,你需要编写一个这样的静态方法:

 private static int GetInt(object state) { return GetIntAsync(((string) state)).Result; } 

然后:

 var t = new Task(GetInt, "3"); 
  //creating task var yourTask = Task.Factory.StartNew(() => GetIntAsync("3").Result); //... int result = yourTask.Result; 

更新:

是的,不幸的是它确实开始了这项任务。 使用上面提到的代码:

  //creating task var yourTask = new Task(() => GetIntAsync("3").Result); //... // call task when you want int result = yourTask.Start();