Cuando empezás a hacer applicaciones asincrónicas en C# todo parece muy simple, casi mágico. Ponés un async acá algunos awaits allá y listo!

bob loves async

Pero luego, cuando empezás a usar asyncs más y más, empiezan los problemas.

nuevo lenguaje

Como no conocés muy bien la tecnología empezás a adoptar reglas, reglas que no entendés, pero que seguís. Encontrás estas reglas en StackOverflow (preferiblemente en las respuestas y no en preguntas!) o en blogs. Entonces empezas a crear tu propia versión de los diez mandamientos:

commandments

  • Usarás ConfigureAwait(false).
  • No usarás async void.
  • No usarás .Result.
  • Usarás GetAwaiter().GetResult() en lugar de .Result.
  • Deberás retornar siempre una Task.
  • etc.

No hay nada malo en seguir reglas. Pero yo me cansé de ellás. Quería tener una explicación para cada una. Porque, al final y al cabo, si queres dominar una tecnología, tenés que ir más profundo. Entonces decidí empezar a leer más sobre programación asincrónica. Tratando de encontrar respuestas a preguntas como ”¿Qué demonios sigifica el false en la llamada a ConfigureAwait?” o ”¿Por qué necesito llamar a GetAwaiter()?”, o aún mejor ”¿Qué demonios es un awaiter?”, ”¿SyncronizationContext verdad o mito?”, ”¿Si una Task falla en el bosque y nadie está ahí, emite un sonido?”… ok tal vez no esa.

Así que agregué estos tres libros a mi lista de lectura:

En las próximas semanas voy a estar subiendo las lecciones aprendidas de cada libro, así que te invito a esta aventura asincrónica.

¡No dejes de codear!