Поделиться через


Асинхронные операции (ADO.NET)

Обновлен: November 2007

Для завершения некоторых операций базы данных, например для выполнения команд, требуется значительное время. В таком случае однопотоковые приложения должны блокировать другие операции и ждать окончания команды перед тем, как они смогут продолжить свои собственные операции. В противоположность этому, так как поток переднего плана может назначать долговременные операции фоновому потоку, он остается активным во время всей операции. Приложение Windows, например, делегирующее долговременную операцию фоновому потоку, позволяет потоку пользовательского интерфейса реагировать при выполнении операции.

.NET Framework предоставляет несколько асинхронных шаблонов конструирования, которые разработчики могут использовать для извлечения преимуществ из фоновых потоков и освобождает пользовательский интерфейс высокоприоритетных потоков от выполнения других операций. ADO.NET поддерживает те же шаблоны конструирования в его классе SqlCommand. Конкретнее, методы BeginExecuteNonQuery, BeginExecuteReader и BeginExecuteXmlReader в сочетании с методами EndExecuteNonQuery, EndExecuteReader и EndExecuteXmlReader предоставляют асинхронную поддержку.

Эти методы поддерживаются только в Microsoft Windows XP и Windows 2000, но не в Windows 98 или Windows ME.

zw97wx20.alert_note(ru-ru,VS.90).gifПримечание.

Асинхронное программирование является основной функцией .NET Framework, а ADO.NET пользуется всеми преимуществами стандартных шаблонов конструирования. Дополнительные сведения о разных видах асинхронной техники, доступных разработчикам, см. в разделе Асинхронный вызов синхронных методов.

Хотя использование асинхронной техники при помощи функций ADO.NET не требует какого-либо дополнительного специального рассмотрения, имеется большая вероятность того, что большинство разработчиков будет использовать асинхронные функции в ADO.NET, а не в других областях .NET Framework. Важно знать о преимуществах и проблемах создания многопотоковых приложений. Приводимые далее в этом разделы примеры указывают на несколько важных проблем, которые должны учитывать разработчики при построении приложений, включающих функциональные возможности многопотоковой техники.

В этом подразделе

  • Windows-приложения, использующие ответные вызовы (ADO.NET)
    Предоставляет пример, демонстрирующий, как безопасно выполнить асинхронную команду, правильно обрабатывающую взаимодействие с формой и свое содержимое из отдельного потока.

  • Приложения ASP.NET, использующие дескрипторы ожидания (ADO.NET)
    Предоставляет пример, демонстрирующий, как выполнить несколько параллельных команд из страницы ASP.NET, используя обработки ожидания для управления операцией по завершении всех команд.

  • Опрос в приложениях командной строки (ADO.NET)
    Предоставляет пример, демонстрирующий использование ждущего режима для ожидания завершения выполнения асинхронной команды из приложения командной строки. Эта техника также действительна в библиотеке классов или в другом приложении без пользовательского интерфейса.

См. также

Основные понятия

Асинхронный вызов синхронных методов

Другие ресурсы

SQL Server и ADO.NET