c#4.0,async CTP和async C#5.0兼容吗?

时间:2012-12-09 18:53:20

标签: c# async-await async-ctp

我有一个使用异步CTP库的应用程序能够使用async / await关键字,我知道C#,5.0的实际版本默认具有此功能,并且它不是所有确切的异步版本CTP。我的意思是,例如在异步CTP中存在TaskEx且在C#5.0中不存在,是Task。

但是有了这些不同之处,我想知道异步方法返回的Task对象是否相同。

就我而言,我有一个存储库接口来访问数据库。此刻度库目前由使用C#4.0的类实现,但它可以使用asyc CTP返回Task并使用await keyowrd。但是在将来,我想使用其他使用C#5.0的类。

如果我的interace定义了一个返回Task的方法,我可以用使用C#4.0的类和使用C#5.0的类实现这个接口吗?或者在异步CTP和C#5.0中的Task对象中存在差异?

PD:我更正了C#的版本,我的意思是5,0而不是C#4.5。

PD2:似乎VS2012我可以使用Microsoft.Bcl.Async和Microsoft.CompilerServices.AsyncTargetingPack在项目中使用asyn / await关键字,目标是.NET 4.0。但我不知道它们之间有什么区别。

1 个答案:

答案 0 :(得分:2)

返回的是Task类型。此类型在.NET 4.0中作为任务并行库的一部分引入。

但是,如果我是你,我会将所有内容升级到VS2012,用Microsoft.Bcl.Async替换Async CTP。底层编译器类型 不同(并且互不兼容),并且Async CTP中存在已知错误以及安装问题。