Async / Await vs Threads

В .Net 4.5 Microsoft добавила новую функцию Async/Await для упрощения асинхронного кодирования. Однако, мне интересно

  1. Может ли Async/Await полностью заменить старый способ использования Threads ?
  2. Является ли Async/Await способным делать то, что Thread может делать асинхронно?
  3. Можно ли использовать Async/Await с помощью некоторых методов, таких как WebClient.DownloadStringAsync или я могу преобразовать любой синхронный метод, чтобы использовать Async/Await а не блокировать основной stream?

может ли он полностью заменить старый способ использования Threads?

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

способный делать то, что когда-либо Thread может делать асинхронно?

Грубо. Ожидание просто позаботится о том, чтобы иметь дело с задержкой, иначе это не делает ничего, что делает stream. Выражение ожидания, то, что находится справа от ключевого слова ожидания, – это то, что выполняет свою работу. В идеале он вообще не использует stream, он отправляет запрос драйвера, и как только драйвер завершает передачу данных, он генерирует обратный вызов уведомления о завершении. Сетевое взаимодействие на сегодняшний день является наиболее распространенным явлением, частые задержки сотен миллисекунд являются обычным явлением и неизбежным побочным эффектом услуг, перемещающихся с рабочего стола или локальной сети в «облако». Использование таких сервисов синхронно сделало бы пользовательский интерфейс совершенно невосприимчивым.

только может использоваться с некоторыми методами, такими как WebClient.DownloadStringAsync

Нет. Вы можете использовать его любым способом, который возвращает задачу. Методы XxxxAsync () являются только предположенными в платформе .NET для общих операций, требующих времени. Подобно загрузке данных с веб-сервера.

Официальное заявление по этому вопросу. Хотя вы должны понимать различия между streamами и асинхронным программированием, прежде чем слепо заменить одну вещь другими.

  • Разница между операторами Equals / equals и ==?
  • Разница между длинными и внутренними типами данных
  • Что такое символ без знака?
  • Как сделать .lib-файл, когда есть .dll-файл и заголовочный файл
  • Проверка XML в отношении XSD с ссылкой на C #
  • Удалить определенную строку из текстового файла?
  • Получить подстроку char *
  • Сплавленные многократные добавления и режимы округления по умолчанию
  • appSettings vs applicationSettings. appSettings устарел?
  • libxml / tree.h нет такого файла или каталога
  • Как добавить reflection в приложение C ++?
  • Interesting Posts

    Преобразование unicode в соответствующий текст в электронной таблице Excel

    Установка родового типа во время выполнения

    Изменение системного языка Windows 7/8/10 – приветственный экран, логин и т. Д.

    Как транслировать ТВ / Фильмы / Музыка через Интернет на различные устройства с домашнего сервера?

    Можно ли установить LARGEADDRESSAWARE из Visual Studio?

    Можно ли восстановить предметы, удаленные из «Корзины»?

    как получить доступ к панели «Сеть» на инструментах разработчика Google Chrome с seleniumом?

    В чем смысл «__attribute __ ((упакованный, выровненный (4)))»

    путь к файлу Windows в формате java

    Использование ZXing для создания приложения сканирования штрих-кода для Android

    Как разбирать строку в nullable int

    Передача двумерного массива с помощью указателя

    Фотографии из папки и отображение полноэкранного слайд-шоу

    Не удалось разрешить имя хоста ip

    Безопасное использование HttpURLConnection

    Давайте будем гением компьютера.