Шаблоны разработки для асинхронного программирования
Обновлен: Ноябрь 2007
Обычно асинхронные операции используются для выполнения задач, которые могут занять продолжительное время, например открытие крупных файлов, соединение с удаленными компьютерами или запросы к базе данных. Асинхронная операция выполняется в отдельном потоке относительно потока главного приложения. Когда приложение вызывает методы для асинхронного выполнения операции, оно может продолжать работу, пока асинхронный метод выполняет свою задачу.
Платформа .NET Framework предоставляет два шаблона разработки для асинхронных операций:
асинхронные операции, использующие объекты IAsyncResult;
асинхронные операции, использующие события.
Шаблон разработки IAsyncResult делает возможным применение разнообразных моделей программирования, но более сложен в освоении и обеспечивает уровень гибкости, не востребованный большинством приложений. Везде, где это возможно, разработчикам библиотеки классов следует реализовывать асинхронные методы по управляемой событиями модели. В некоторых случаях разработчику библиотеки также следует реализовать модель, основанную на интерфейсе IAsyncResult.
Документацию по асинхронным операциям, использующим события, см. в разделе Обзор асинхронной модели, основанной на событиях.
Асинхронное программирование — это возможность, поддерживаемая многими областями платформы .NET Framework, в том числе:
ввод-вывод на основе файлов, потоков и сокетов;
работа в сети;
удаленные каналы (HTTP, TCP) и прокси-сервера;
веб-службы с поддержкой XML, создаваемые с помощью ASP.NET;
веб-формы ASP.NET;
организация очередей сообщений с помощью класса MessageQueue.
В этом подразделе
Общие сведения об асинхронном программировании
Обсуждается асинхронный шаблон разработки, основанный на интерфейсе IAsyncResult, который предоставляет гибкую модель программирования для работы с асинхронными операциями.Вызов асинхронных методов с помощью IAsyncResult
Приводятся примеры кода, демонстрирующие различные способы, которыми приложения могут определить момент завершения асинхронной операции.Асинхронное программирование с использованием делегатов
Описывается вызов синхронного метода асинхронным образом.Многопоточное программирование с использованием асинхронной модели, основанной на событиях
Описывается асинхронный шаблон на основе событий, который предоставляет асинхронную модель программирования, использующую события для связи между потоками.
См. также
Основные понятия
Асинхронный файловый ввод-вывод