我有一个使用异步 CTP 库的应用程序,以便能够使用 async/await 关键字,并且我知道 C# 的实际版本 5.0 默认情况下具有此功能,并且并非所有 async 的确切版本CTP。我的意思是,例如在异步 CTP 中存在 TaskEx,而在 C# 5.0 中不存在,是 Task。
但是尽管存在这些差异,我还是想知道异步方法返回的 Task 对象是否相同。
就我而言,我有一个存储库接口(interface)来访问数据库。目前该存储库是由使用 C# 4.0 的类实现的,但它可以使用 asyc CTP 返回任务并使用 wait 关键字。但将来,我想使用其他使用 C# 5.0 的类。
如果我的接口(interface)定义了一个返回任务的方法,我可以用使用 C# 4.0 的类和使用 C# 5.0 的类来实现这个接口(interface)吗?或者异步CTP和C# 5.0中的Task对象存在差异?
PD:我更正了 C# 的版本,我的意思是 5,0 而不是 C# 4.5。
PD2:似乎在VS2012中我可以使用Microsoft.Bcl.Async和Microsoft.CompilerServices.AsyncTargetingPack在目标为.NET 4.0的项目中使用asyn/await关键字。但我不知道它们之间有什么区别。
最佳答案
它与返回的 Task
类型相同。此类型是在 .NET 4.0 中作为任务并行库的一部分引入的。
但是,如果我是你,我会将所有内容升级到 VS2012,将异步 CTP 替换为 Microsoft.Bcl.Async 。底层编译器类型不同(并且相互不兼容),并且异步 CTP 中存在已知错误以及安装问题。
关于c# 4.0、async CTP 和 async C# 5.0 兼容吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13790587/