在C#中,一类如何以ASP.NET和非WEB应用程序同时运行的方式进行自己的应用程序结尾完成?

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

我在ASP.NET和非WEB应用程序中使用了一个库类,需要实现最终确定。

在我的项目库中,我希望该类执行自己的实现最终确定,而无需开发人员将呼叫添加到global.application_end或appdomain.currentdomain.processexit。

如何才能做到这一点?

其他背景/理由:

即使我要考虑这些选项,也似乎AppDomain.currentdomain.processexit在IIS中停止ASP .NET应用程序时不会被调用。和global.application_end是特定于ASP .NET的。因此,两种情况都不兼容两种情况。

如果它有助于有一个特定的示例,说明为什么可能需要这一点...在这种特殊情况下,它使用SQLDIPPentions(我理解)需要呼叫SQLDEpendenty.start。开始进行初始化,并在应用程序之前呼叫呼叫。终止。

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

有帮助吗?

解决方案

看来,在此答案中描述了一个模拟的静态未来未命名器, https://stackoverflow.com/a/256278/449837, ,在Web和非WEB应用程序中工作。

这是我工作的示例:

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
}

(注意:对于某些代码刮擦环境,例如LinqPad,〜最终器可能不会触发,直到ScratchPad应用程序本身关闭)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top