understanding - task.run c#
Async/Await vs Threads (2)
En .Net 4.5 Microsoft ha agregado la nueva característica Async/Await
para simplificar la codificación asincrónica. Sin embargo, me pregunto
- ¿Puede
Async/Await
reemplazar completamente la forma antigua de usarThreads
? - ¿Es
Async/Await
capaz de hacer lo que unThread
puede hacer de manera asincrónica? - Can
Async/Await
solo se puede usar con algunos métodos comoWebClient.DownloadStringAsync
o ¿puedo convertir cualquier método sincrónico para que useAsync/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 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 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 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.
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.