如何构建一个任务而不启动它?
我想使用这个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();