Capítulo 8. Interoperabilidad
Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com
Asíncrono, paralelo, reactivo... cada uno de ellos tiene su lugar, pero ¿hasta qué punto funcionan bien juntos?
En este capítulo, veremos varios escenarios de interoperabilidad en los que aprenderás a combinar estos enfoques diferentes. Aprenderás que se complementan, en lugar de competir; hay muy poca fricción en los límites donde un enfoque se encuentra con otro.
8.1 Envolturas asíncronas para métodos "asíncronos" con eventos "completados"
Problema
Hay es un patrón asíncrono más antiguo que utiliza métodos llamados
junto con eventos llamados Operation
Async
. Quieres realizar una operación utilizando el patrón asíncrono más antiguo y Operation
Completedawait
el resultado.
Consejo
En
y Operation
Async
se denomina Patrón Asíncrono Basado en Eventos (PAE). Vas a envolverlos en un método Operation
CompletedTask
-retorno que sigue el Patrón Asíncrono Basado en Tareas (PAT).
Solución
Utilizando el tipo TaskCompletionSource<TResult>
, puedes crear envoltorios para operaciones asíncronas. El tipo TaskCompletionSource<TResult>
controla un Task<TResult>
y te permite completar la tarea en el momento adecuado.
Este ejemplo define un método de extensión para WebClient
que descarga un string
. El tipo WebClient
define DownloadStringAsync
y DownloadStringCompleted
. Utilizándolos, puedes definir un método DownloadStringTaskAsync
, como éste:
public ...
Get Libro de cocina de la concurrencia en C#, 2ª edición now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.