Async / Await vs Threads
В .Net 4.5 Microsoft добавила новую функцию Async/Await
для упрощения асинхронного кодирования. Однако, мне интересно
- Может ли
Async/Await
полностью заменить старый способ использованияThreads
? - Является ли
Async/Await
способным делать то, чтоThread
может делать асинхронно? - Можно ли использовать
Async/Await
с помощью некоторых методов, таких какWebClient.DownloadStringAsync
или я могу преобразовать любой синхронный метод, чтобы использоватьAsync/Await
а не блокировать основной stream?
- Является ли это плохой практикой, чтобы поймать неспецифическое исключение, такое как System.Exception? Зачем?
- Что такое правило трех?
- Что вызывает fragmentацию памяти в .NET.
- iterator стирания вектора
- Какой самый быстрый способ изменить ключ элемента внутри std :: map
- Существуют ли какие-либо реализации, не поддерживающие двойные дополнения C?
- Вызов метода classа с помощью указателя classа NULL
- Почему не может clang с libc ++ в режиме c ++ 0x ссылаться на этот пример boost :: program_options?
- Как вы используете конструктор, отличный от стандартного для члена?
- функция члена шаблона classа шаблона, вызванная из функции шаблона
- Должен ли я возвращать объекты const?
- Используйте функцию динамического ключевого слова / .NET 4.6 в Unity
- Как открыть свойство коллекции?
может ли он полностью заменить старый способ использования Threads?
Нет. Нить может сделать много полезного. Ожидание специально предназначено для решения чего-то, требующего времени, чаще всего это запрос ввода-вывода. Что традиционно было сделано с обратным вызовом, когда запрос ввода-вывода был завершен. Написание кода, который опирается на эти обратные вызовы, довольно сложно, ожидание значительно упрощает его.
способный делать то, что когда-либо Thread может делать асинхронно?
Грубо. Ожидание просто позаботится о том, чтобы иметь дело с задержкой, иначе это не делает ничего, что делает stream. Выражение ожидания, то, что находится справа от ключевого слова ожидания, – это то, что выполняет свою работу. В идеале он вообще не использует stream, он отправляет запрос драйвера, и как только драйвер завершает передачу данных, он генерирует обратный вызов уведомления о завершении. Сетевое взаимодействие на сегодняшний день является наиболее распространенным явлением, частые задержки сотен миллисекунд являются обычным явлением и неизбежным побочным эффектом услуг, перемещающихся с рабочего стола или локальной сети в «облако». Использование таких сервисов синхронно сделало бы пользовательский интерфейс совершенно невосприимчивым.
только может использоваться с некоторыми методами, такими как WebClient.DownloadStringAsync
Нет. Вы можете использовать его любым способом, который возвращает задачу. Методы XxxxAsync () являются только предположенными в платформе .NET для общих операций, требующих времени. Подобно загрузке данных с веб-сервера.
Официальное заявление по этому вопросу. Хотя вы должны понимать различия между streamами и асинхронным программированием, прежде чем слепо заменить одну вещь другими.