Ищете объяснение слова «асинхронный» в .Net? - PullRequest
4 голосов
/ 16 марта 2010

Мне нужен кто-то, чтобы объяснить следующие имена;

  1. Асинхронные делегаты.
  2. Асинхронные методы.
  3. Асинхронные события.

В настоящее время я сдаю экзамен 70-536 и пока покрываю все свои базы. Глава о потоках и онлайн-ресурсы были полезны для меня во время второго прочтения. Тем не менее, названия, использованные выше, ничего не значат для меня? Я был бы очень признателен за значение слова «асинхронный» и его значение для делегатов, методов и событий.

Не стесняйтесь вдаваться в подробности, сколько хотите.

Ответы [ 5 ]

12 голосов
/ 16 марта 2010

«Асинхронный» описывает тип потока выполнения.

Синхронные инструкции выполняются линейно и не позволяют последующим инструкциям выполняться до завершения (то есть они блокируют ). Так дан следующий синхронный код:

DoOneThing();
DoAnotherThing();

DoAnotherThing не выполняется, пока не закончится DoOneThing.

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

DoOneAsynchronousThing();
DoAnotherThing();

Первый оператор инициирует асинхронную операцию, затем выполняет другое действие непосредственно перед завершением первой операции (или, возможно, даже ее началом).

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

Таким образом, все асинхронные делегаты, методы и события выполняются (и завершаются) в неопределенное время и не блокируют основной поток выполнения.

4 голосов
/ 16 марта 2010

Я верю в изучение и нахождение ваших ответов, когда дело доходит до экзамена.

Вот некоторые статьи

Прочитайте вики на нем: http://en.wikipedia.org/wiki/Asynchronous_communication

Или здесь, на «Что такое асинхронный», это коротко и по существу: http://www.webopedia.com/TERM/A/asynchronous.html

На примере, скажем, в моем коде, у меня есть последовательный порт. Один поток читает, а другой поток пишет в порт. Я могу читать и писать одновременно (вроде), так что это ASYNC. Если бы я блокировал поступающие данные во время записи, я был бы синхронным.

3 голосов
/ 16 марта 2010

См. Раздел документации .NET по Асинхронное программирование с использованием делегатов .

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

2 голосов
/ 16 марта 2010

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

Асинхронный делегат (и, соответственно, асинхронное событие) просто означает, что базовый метод (или методы!) Вызывается асинхронным образом.

Асинхронный метод - это метод, который выполняет асинхронную операцию (хе).

Извините за расплывчатость, но если вы понимаете, что значит асинхронный, то это должно указать вам правильное направление.

1 голос
/ 16 марта 2010

Если вы выполняете что-то синхронно, ваше приложение ожидает результата: например, заказывает гамбургер при прохождении. Вы в значительной степени застряли в очереди, пока задача (подготовка бургера, выставление счетов и доставка) не будет завершена.

Если вы выполняете асинхронно, вы делаете другие вещи вместо ожидания: например, заказываете пиццу и смотрите фильм, ожидая его доставки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...