En C #, comment une classe peut-elle effectuer sa propre finalisation d'application d'une manière qui fonctionne à la fois sous les applications ASP.NET et non Web?

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

Question

J'ai une classe de bibliothèque utilisée dans les applications ASP.NET et non Web qui nécessite une finalisation de fin de candidature.

Dans la bibliothèque de mon projet, je veux que la classe fasse sa propre finalisation de fin de candidature sans obliger un développeur à ajouter un appel à global.application_end ou appdomain.currentdomain.processExit.

Comment cela peut-il être fait?

Contexte / justification supplémentaire:

Même si je devais considérer ces options, il semble que AppDomain.CurrentDomain.ProcessExit ne soit pas appelé lorsqu'une application ASP .NET est arrêtée dans IIS. Et global.application_end est spécifique à ASP .NET. Ainsi, aucune option n'est compatible avec les deux situations.

Si cela aide à avoir un exemple spécifique de la raison pour laquelle cela pourrait être nécessaire ... Dans ce cas particulier, il utilise SQLDEPEPPENCT qui (si je le comprends) nécessite un appel à SQLDEPEPPECT. Résiliation.

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

Était-ce utile?

La solution

Il semble qu'un fianaliseur statique simulé décrit dans cette réponse donc, https://stackoverflow.com/a/256278/449837, fonctionne dans les applications Web et non Web.

Voici un échantillon que je travaille:

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
}

(Remarque: Pour certains environnements de code à gratter comme Linqpad, ~ Finalizer ne peut pas tirer jusqu'à ce que l'application ScratchPad se ferme)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top