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


Асинхронные операции

Скачать ADO.NET

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

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

Примечание

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

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

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

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

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

Выполнение опросов в консольных приложениях
Содержит пример, демонстрирующий использование опроса для ожидания завершения выполнения асинхронной команды из консольного приложения. Этот метод также допустимый в библиотеке классов или другом приложении без пользовательского интерфейса.

Дальнейшие действия