C#Task.Run等效于.NET 4.0

时间:2017-02-21 20:29:39

标签: c# async-await

我有以下代码,它在 .NET 4.5

中工作正常
return Task.Run(async () => await MyAsyncMethodThatReturnsAnObject()).Result;

现在我需要让它在 .NET 4.0 上运行,所以我想出了:

return Task.Factory.StartNew<object>(async () => { await MyAsyncMethodThatReturnsAnObject()}).Result;

但它给了我这个错误:

  

'任务&LT;对象&gt;'不包含GetAwaiter的定义,不包含   扩展方法'GetAwaiter'接受类型的第一个参数   '任务&LT;对象&gt;'

MyAsyncMethodThatReturnsAnObject是一个工厂方法,其返回类型为object

2 个答案:

答案 0 :(得分:3)

async / await是.NET 4.5。 您需要安装Microsoft.Bcl.Async才能在4中工作。

答案 1 :(得分:-2)

Task.Factory.StartNew<object>(() =>   
    MyAsyncMethodThatReturnsAnObject().Result,
    TaskScheduler.Default
).Result