如何创建任务类型的新任务?

时间:2017-07-28 02:32:39

标签: c# .net task

我有:

async Task doWork() { Console.WriteLine("do some async work in this method"); }

Task task = new Task(doWork);   //line X
task.Start();
task.Wait();

第X行产生编译错误:

  

CS0407'Task Form1.doWork()'的返回类型错误

如何实例化新任务doWork

我可以使用以下内容,但它给了我一组不同的问题。

Task task = doWork();
task.Wait();

我想避免使用第二种方法。如何在第X行实例化Task类型的新async Task

2 个答案:

答案 0 :(得分:2)

在这种情况下,您可能希望定义doWork以使返回类型为void。然后,您可以使用参数tasksee docs)的Task构造函数初始化Action

或者,您可以使用

Task task = doWork();

有关这两种技术之间权衡的讨论,请参见here

答案 1 :(得分:0)

由于doWork()的返回类型为select t1.a, t1.b from t1 where t1.c = 1 ,因此声明需要是通用Task的实例 - 即Task<TResult>