Me encontré con un problema ( https://github.com/HTBox/allReady/issues/1313 ) en GitHub donde discutieron sobre ConfigureAwait(false)
eliminar el código, afirmando que, en ASP.NET Core
la llamada a
ConfigureAwait(false)
es redundante y no hace nada
Lo mejor que pude encontrar aquí es una "nota al margen" en una respuesta (de Stephen Cleary, https://stackoverflow.com/a/40220190/2805831 ) que dice que
ASP.NET Core ya no tiene un "contexto"
Entonces, ¿es ConfigureAwait(false)
realmente innecesario en ASP.NET Core (incluso si usa .Net Framework completo)? ¿Tiene alguna ganancia real en el rendimiento en algunos casos o diferencia en el resultado / semántica?
EDITAR: ¿Es diferente en este aspecto si lo alojo como una aplicación de consola o en IIS?
.net
asp.net-core
async-await
Pedro Lorentz
fuente
fuente
ConfigureAwait(false)
, ya que la biblioteca puede ser consumida por diferentes aplicaciones (ASP.NET Core, WPF, UWP, consola, etc.)ConfigureAwait(false)
, si bien es relevante en ASP.NET classic, de ninguna manera es necesario . Es una compensación: mitiga un poco algunos puntos muertos de sincronización sobre asincrónica (que son fallas de diseño de todos modos, no existen a menos que alguien haga algo tonto) y ocasionalmente tiene un aumento de rendimiento de ~ microsegundos al no recargar el contexto. A costa de no poder depender del contexto y tenerConfigureAwait
todo su código. stackoverflow.com/questions/28221508/…Respuestas:
ConfigureAwait
solo tiene efectos en el código que se ejecuta en el contexto de unSynchronizationContext
ASP.NET Core que no tiene (ASP.NET "Legacy" sí).El código de propósito general aún debería usarlo porque podría estar ejecutándose con un
SynchronizationContext
.SynchronizationContext de ASP.NET Core
fuente
¿Qué pasa con esto?
En este momento (febrero de 2020) los desarrolladores en el blog de MS recomiendan usar ConfigureAwait (falso) para mejorar el rendimiento, evitar puntos muertos. https://devblogs.microsoft.com/dotnet/configureawait-faq/
fuente