2014-11-15 2 views
0

У меня есть приложение .net 4.0 выполняет поиск в тяжелой базе данных. Я хочу, чтобы эти операции были асинхронными, а также должны быть отменены. Async и ждут отлично работает в .net 4.5, который также имеет методы execereaderasync для операций Async db. Но я не могу перейти на .net 4.5. Программирование на основе задач может использоваться, но асинхронизация поиска db является приоритетной. Может ли кто-нибудь предложить возможные варианты достижения этого в .net 4.0Асинхронный запрос из базы данных с помощью C# 4.0

ответ

0

Вы можете порезать зубы и использовать Asynchronous Programming Model (APM), что все эти учебные материалы говорят о прошлом. ADO.NET (по крайней мере, поставщик SQL Server) поддерживал его с .NET 2.0. В частности, вы хотите использовать методы BeginExecute/EndExecute и Cancel на SqlCommand.

+0

Мне нужен способ, которым я могу использовать выше методы асинхронно в .net 4.0 –

+0

Если вы хотите, чтобы вы использовали их с ключевым словом 'async', вы можете использовать приведенный выше ответ, чтобы получить поддержку самого ключевого слова. NET 4.0, а затем используйте семейство методов TaskFactory.FromAsync для получения ожидаемой задачи из пары методов BeginExecute/EndExecute. Тем не менее, вам все равно придется отменить старый путь. – cynic

+0

Да, но я думаю, что запуск SQL-запросов не будет выполняться в асинхронном режиме, только код .Net будет работать в асинхронном режиме. После перехода на SQL Server SQL Server запустит его в синхронном режиме. Это то, что я думаю –

2

Вы можете использовать пакет асинхронного таргетинга (Microsoft.Bcl.Async), чтобы получить async-wait для работы с .NET 4.0. Это актуально blog на msdn. Направленный пакет позволяет использовать AWAIT в Visual Studio 2012 (и более новых версии) при ориентации любого из следующих платформ (или более поздних версий):

  • .NET Framework 4.0 (с KB2468871)
  • Silverlight 4
  • Windows Phone 7.5
  • и переносные библиотеки классов, предназначенные для этих платформ.

Этот способ, как только вы сможете перенести приложение на .NET 4.5, это будет легкий переход.

+0

Я думаю, что использование async и ожидания не будет вполне достаточным, потому что 4.5 имеет методы executereaderasync, которые 4.0 doea не имеют. Обычный исполнитель - синхронный –

Смежные вопросы