.net 4.5异步语法

时间:2012-10-22 13:29:00

标签: .net-4.5 async-await

我写了下面的代码,

Task.Factory.StartNew<int>(async () =>
        {
            await Task.Delay(1000);
            return 42;
        });

但读取行出现在“async”关键字下,由于某些语法错误导致代码无法编译,有人可以建议我该怎么做?

很多!

2 个答案:

答案 0 :(得分:5)

您可能希望使用Task.Runasync lambdas具有更自然的语法:

var task = Task.Run(async () =>
{
  await Task.Delay(1000);
  return 42;
});

答案 1 :(得分:2)

您必须返回Task<T>,如下所示:

Task.Factory.StartNew<Task<int>>(async () =>
{
    await Task.Delay(1000);
    return 42;
});

async关键字需要返回TaskTask<T>void。阅读更多相关信息:async (C# Reference)