C# 4.0, асинхронный CTP и асинхронный C# 5.0 совместимы?

У меня есть приложение, которое использует асинхронную библиотеку CTP, чтобы иметь возможность использовать ключевые слова async/await, и я знаю, что фактическая версия C# 5.0 имеет эту функцию по умолчанию, и не вся точная версия поддерживает асинхронную CTP. Я имею в виду, что, например, в асинхронной CTP существует TaskEx, а в C# 5.0 не существует, это Task.

Но, несмотря на эти различия, я хотел бы знать, одинаковы ли объекты Task, возвращаемые асинхронными методами, или нет.

В моем случае у меня есть интерфейс для хранилища для доступа к базе данных. Этот репозиторий на данный момент реализован классом, использующим C# 4.0, но он может использовать asyc CTP для возврата Task и использовать ключ await. Но в будущем я хотел бы использовать другие классы, которые используют C# 5.0.

Если мое взаимодействие определяет метод, который возвращает задачу, могу ли я реализовать этот интерфейс с классом, использующим C# 4.0, и классом, использующим C# 5.0? Или существует различие в объекте Task в асинхронных CTP и C# 5.0?

PD: Я исправляю версию C#, я имею в виду 5,0 вместо C# 4.5.

PD2: кажется, что с VS2012 я могу использовать Microsoft.Bcl.Async и Microsoft.CompilerServices.AsyncTargetingPack, чтобы использовать ключевые слова asyn/await в проекте, целью которого является.NET 4.0. Но я не знаю, в чем разница между ними.

1 ответ

Решение

Это то же самое Task тип, который возвращается. Этот тип был введен в.NET 4.0 как часть параллельной библиотеки задач.

Тем не менее, я бы обновил все до VS2012 на вашем месте, заменив Async CTP на Microsoft.Bcl.Async. Базовые типы компиляторов различны (и несовместимы друг с другом), и в Async CTP есть известные ошибки, а также проблемы установки.

Другие вопросы по тегам