«Асинхронный» описывает тип потока выполнения.
Синхронные инструкции выполняются линейно и не позволяют последующим инструкциям выполняться до завершения (то есть они блокируют ). Так дан следующий синхронный код:
DoOneThing();
DoAnotherThing();
DoAnotherThing
не выполняется, пока не закончится DoOneThing
.
Асинхронные инструкции отличаются тем, что вы не знаете (или иногда даже не заботитесь), когда они начинают или заканчивают выполнение. В таком случае:
DoOneAsynchronousThing();
DoAnotherThing();
Первый оператор инициирует асинхронную операцию, затем выполняет другое действие непосредственно перед завершением первой операции (или, возможно, даже ее началом).
Существует много различных механизмов для обеспечения асинхронного выполнения: наиболее распространенными (по крайней мере, в мире .NET), вероятно, являются ThreadPool
(для асинхронного выполнения в процессе) и Microsoft Message Queue (для асинхронного взаимодействия между процессами исполнение). Для ознакомления с .NET вы можете начать с этого раздела MSDN «Включение асинхронных вызовов» .
Таким образом, все асинхронные делегаты, методы и события выполняются (и завершаются) в неопределенное время и не блокируют основной поток выполнения.