Cuando tratamos con algunos puntos de extensibilidad en ASP.NET Web API, también trabajamos con TAP (Patrón de programación basado en tareas). En algunos puntos, queremos proporcionar una continuación a un método asíncrono con ContinueWith
y hacemos algunas cosas dentro del delegado que pasamos al ContinueWith
.SynchronizationContext y ASP.NET Web API Extensibility Points
Como Brad Wilson explicó here en profundidad que el SynchronizationContext es vital cuando proporcionamos continuaciones. Para mí, el único lugar donde necesito volver al SynchronizationContext
en ASP.NET Web API es el lugar donde tengo que jugar con HttpContext.Current
(que es algo que nunca haría en una aplicación ASP.NET Web API) y el lugar donde necesito establecer cierta información para el hilo basado como Thread.CurrentPrincipal
.
Así que la pregunta es: ¿alguna vez queremos volver al SynchronizationContext
cuando proporcionamos continuaciones en algunos puntos de extensibilidad como manejadores de mensajes, filtros, formateadores, etc.?
¡Gracias por la respuesta! Creo que mezcló la pregunta con ASP.NET MVC. Supongamos que no estás en ASP.NET Host. Entonces, no tendrás el HttpContext. Entonces, los puntos de extensibilidad no están estrechamente relacionados con aquellos. – tugberk
@tugberk La respuesta sigue siendo la misma, de verdad; si tiene algo que está vinculado a un contexto particular, y luego desea sincronizarlo, realmente quiere asegurarse de copiar los valores fuera del contexto (o asegurarse de que puede acceder de nuevo * a * el contexto) que usted Necesitaremos procesamiento. – casperOne
el problema es que: en la API web, casi no tiene contexto. Puedes ver el contexto dentro de las variables que se transportan a través de thread + the framework infrastructure siempre regresas al contexto de sincronización si miras el código fuente. Es por eso que tu respuesta no es aplicable. – tugberk