我有一个使用异步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。但我不知道它们之间有什么区别。
答案 0 :(得分:2)
返回的是Task
类型。此类型在.NET 4.0中作为任务并行库的一部分引入。
但是,如果我是你,我会将所有内容升级到VS2012,用Microsoft.Bcl.Async替换Async CTP。底层编译器类型 不同(并且互不兼容),并且Async CTP中存在已知错误以及安装问题。