Async / Await vs Threads

En .Net 4.5 Microsoft ha agregado la nueva característica Async/Await para simplificar la encoding asincrónica. Sin embargo, me pregunto

  1. ¿Puede Async/Await reemplazar completamente la forma antigua de usar Threads ?
  2. ¿Es Async/Await capaz de hacer lo que un Thread puede hacer de manera asincrónica?
  3. Can Async/Await solo se puede usar con algunos métodos como WebClient.DownloadStringAsync o ¿puedo convertir cualquier método sincrónico para que use Async/Await y no para bloquear el hilo principal?

¿Puede reemplazar por completo la vieja forma de usar Threads?

No. Un hilo puede hacer muchas más cosas útiles. Await está diseñado específicamente para hacer frente a algo que lleva tiempo, más típicamente una solicitud de E / S. Que tradicionalmente se hacía con una callback cuando la solicitud de E / S estaba completa. Escribir código que dependa de estas devoluciones de llamadas es bastante difícil, aguardarlo lo simplifica en gran medida.

capaz de hacer lo que un hilo de rosca puede hacer de forma asíncrona?

Aproximadamente. Await solo se encarga de lidiar con el retraso, de lo contrario no hace nada que un hilo hace. La expresión de espera, lo que está a la derecha de la palabra clave await, es lo que hace el trabajo. Lo ideal es que no use un hilo, publica una solicitud de controlador y una vez que el controlador completa la transferencia de datos genera una callback de notificación de finalización. Las redes son, con mucho, el uso más común, las latencias de cientos de milisegundos son comunes y un efecto secundario inevitable de los servicios que se mueven desde el escritorio o una LAN a “la nube”. Utilizar dichos servicios de forma sincrónica haría que la IU no respondiera.

solo se puede usar con algunos métodos como WebClient.DownloadStringAsync

No. Puede usarlo con cualquier método que devuelva una Tarea. Los métodos XxxxAsync () son solo precocinados en .NET Framework para operaciones comunes que llevan tiempo. Como descargar datos de un servidor web.

La statement oficial sobre esto. Aunque debe comprender las diferencias entre los hilos y la progtwigción asincrónica antes de reemplazar ciegamente una cosa con otra.