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

标签 c# async-await async-ctp

我有一个使用异步 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/

相关文章:

c# - 通过查询字符串传递数组

c# - 创建csv文件时,Excel显示双引号

c# - 使用 LINQ 将字符串转换为 int 数组

flutter - Flutter Await不等待

c# - 声明一个可以等待*和*异步运行而无需等待它完成的异步方法?

c# - 从目录中删除文件 asp.net c#

node.js - 优化异步查询 Node

c# - 如何正确地并行运行多个异步任务?

c# - 如果可能,我应该省略 async/await 吗?

visual-studio-2010 - 安装 Visual Studio Async CTP 不起作用