2

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

如果我的接口定义了一个返回任务的方法,我可以用使用 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 在目标是 .NET 4.0 的项目中使用 asyn/await 关键字。但我不知道它们之间有什么区别。

4

1 回答 1

2

它与Task返回的类型相同。这种类型是在 .NET 4.0 中作为任务并行库的一部分引入的。

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

于 2012-12-09T21:32:08.947 回答