El uso de un delegado personalizado y la invocación de su método BeginInvoke ofrecen una forma rápida de desactivar subprocesos de trabajo para su aplicación. Desafortunadamente, perjudican el rendimiento general de su aplicación, ya que consumen subprocesos del mismo grupo utilizado por ASP.NET para gestionar las solicitudes HTTP.
Recuerde también que si la devolución de llamada del método Asíncrono es importante, debe bloquear el hilo principal para que no vuelva al cliente hasta que se complete el proceso asincrónico. Si el registro y el análisis son una llamada al método de "fuego y olvídate", entonces las cosas son más fáciles y puedes simplemente disparar el método y permitir que el servidor responda al cliente. Sin embargo, si la devolución de llamada es importante y el servidor ha completado el procesamiento, no ocurre nada en el servidor para manejar la devolución de llamada una vez que se haya completado; aquí es donde el procesamiento asincrónico en el servidor para las aplicaciones ASP.NET difiere de, por ejemplo, una aplicación WinForms.
Gracias. MVC admite un modelo asincrónico. Parece que si aprovecho eso junto con la técnica BeginInvoke, mi página volverá rápido y el trabajo no ocupará un hilo de trabajo de IIS. ¿Correcto? –
Al volver a leer esa publicación de blog, simplemente puedo hacer una técnica de Thread.Start(). Para mi aplicación, no tendré el riesgo de que ocurran más de un puñado de estos procesos a la vez (generalmente solo 1), por lo que es probablemente la solución más fácil/más sostenible en este punto para mis necesidades. Para cualquier persona que lo siga, busque en la publicación del blog la frase "Bien, usaré Thread.Start() y crearé mi propio hilo". –
@John Sí, tienes razón. si solo quieres devolver la página rápido, sin que el usuario sepa los resultados, es bueno. pero no mejorará el rendimiento. – Mithir