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

Автор: Lewis Jackson
Дата создания: 8 Май 2021
Дата обновления: 25 Июнь 2024
Anonim
Уроки C# – операторы async await – Урок 15
Видео: Уроки C# – операторы async await – Урок 15

Содержание

Определение - Что означает асинхронный вызов метода?

Асинхронный вызов метода - это метод, используемый в программировании .NET, который возвращается к вызывающей стороне непосредственно перед завершением его обработки и без блокировки вызывающего потока.

Когда приложение вызывает асинхронный метод, оно может одновременно выполняться вместе с выполнением асинхронного метода, который выполняет свою задачу. Асинхронный метод выполняется в потоке, отдельном от основного потока приложения. Результаты обработки извлекаются посредством другого вызова в другом потоке.

Асинхронные методы помогают оптимизировать выполнение ресурсов, что приводит к масштабируемому приложению. Они используются для выполнения трудоемких задач, таких как открытие больших файлов, подключение к удаленным компьютерам, запросы к базе данных, вызов веб-служб и веб-форм ASP.NET.

Асинхронный вызов метода может также упоминаться как асинхронный вызов метода (AMI).


Введение в Microsoft Azure и Microsoft Cloud | Из этого руководства вы узнаете, что такое облачные вычисления и как Microsoft Azure может помочь вам перенести и запустить свой бизнес из облака.

Techopedia объясняет асинхронный вызов метода

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

.NET Framework имеет встроенную асинхронную инфраструктуру, так что любой метод может быть вызван асинхронно без изменения его кода.

.NET Framework предоставляет два шаблона проектирования для реализации асинхронного метода, которые используют асинхронные делегаты (объекты IASyncResult) и события. Шаблон асинхронных делегатов является более сложным и обеспечивает гибкость, что делает его хорошо подходящим для различных сложных моделей программирования. Модель на основе событий проста и должна использоваться в большинстве случаев.

В шаблоне асинхронных делегатов объект делегата использует два метода: BeginInvoke и EndInvoke. BeginInvoke имеет список параметров, которые похожи на его упакованную функцию, а также два дополнительных необязательных параметра; он возвращает объект IAsyncResult. EndInvoke возвращает два параметра (out и ref type) вместе с объектом IAsyncResult. BeginInvoke используется для инициирования асинхронного вызова, тогда как EndInvoke используется для получения результатов асинхронного вызова.

Асинхронные шаблоны на основе событий используют класс, который имеет один или несколько методов с именем MethodNameAsync, которые имеют соответствующие синхронные версии, которые выполняются в текущем потоке. Шаблоны на основе событий также могут иметь событие MethodNameCompleted и метод MethodNameAsyncCancel. Этот шаблон позволяет классу взаимодействовать с ожидающими асинхронными операциями, используя модель событий делегата.

Ниже приведены несколько советов, связанных с асинхронными методами:


  • Для высокого параллелизма следует избегать асинхронных методов
  • Необходимо соблюдать осторожность при передаче ссылок на общие объекты
  • EndXXX (вызывается в конце асинхронной операции) должен вызываться, чтобы перебрасывать исключения и избегать сбоев
  • Перехватывая и сохраняя все объекты исключений в асинхронном методе, он может быть переброшен во время вызова EndXXX
  • Элементы управления в пользовательском интерфейсе, которые запускают длительные асинхронные операции, должны быть отключены, если они необходимы только для этой цели
  • Асинхронные методы должны быть реализованы с пониманием многопоточности и в тех случаях, когда они оказываются более эффективными, чем использование синхронных методов.