En C#, ¿cómo puede una clase hacer su propia finalización de fin de aplicación de una manera que funcione bajo las aplicaciones ASP.NET y no WEB?

StackOverflow https://stackoverflow.com/questions/19847181

Pregunta

Tengo una clase de biblioteca utilizada en aplicaciones ASP.NET y no WEB que necesitan finalización del final de la aplicación.

Dentro de la biblioteca de mi proyecto, quiero que la clase haga su propia finalización de fin de aplicación sin requerir que un desarrollador agregue una llamada a Global.Application_end o AppDomain.CurrentDomain.ProcessExit.

¿Cómo se puede hacer esto?

Antecedentes adicionales/justificación:

Incluso si tuviera que considerar esas opciones, parece que AppDomain.CurrentDomain.ProcessExit no se llama cuando se detiene una aplicación ASP .NET en IIS. Y global.application_end es específico de ASP .NET. Entonces, ninguna de las opciones es compatible con ambas situaciones.

Si ayuda a tener un ejemplo específico de por qué esto podría ser necesario ... en este caso particular, utiliza sqlDependency que (según tengo entendido) requiere una llamada a sqlDependency.Star para la inicialización y un llamado a sqlDependency.stop antes de la aplicación terminación.

(ver http://msdn.microsoft.com/en-us/library/ms172133.aspx)

¿Fue útil?

Solución

Parece que un fianalizador estático simulado descrito en esta respuesta, SO RESPUESTA, https://stackoverflow.com/a/256278/449837, funciona en aplicaciones web y no WEB.

Aquí hay una muestra que tengo funcionando:

public class ClassThatNeedsStaticFinalizer {

    // ... other class properties, methods, etc ...     

    #region Static Finalizer Emulation

    static readonly Finalizer finalizer = new Finalizer();
    private sealed class Finalizer
    {
        ~Finalizer()
        {
             //  ... Do final stuff here ...
        }
    }

    #endregion
}

(Nota: para algunos códigos ScratchPad entornos como LinqPad, ~ El finalizador puede no disparar hasta que se cierre la aplicación Scratchpad)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top