Pregunta Async / Await vs Threads


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

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

76
2018-03-01 01:23


origen


Respuestas:


¿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 tratar con alguna cosa tomar tiempo, más típicamente una solicitud de E / S. Que tradicionalmente se hacía con una devolución de llamada 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 espera expresión, 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 devolución de llamada 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.


55
2018-03-01 02:34



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


12
2018-03-01 02:12