1

我有一个在 ASP.Net 和非 Web 应用程序中使用的库类,需要应用程序结束完成。

在我的项目库中,我希望该类执行它自己的应用程序结束完成,而不需要开发人员添加对 Global.Application_End 或 AppDomain.CurrentDomain.ProcessExit 的调用。

如何才能做到这一点?

其他背景/理由:

即使我要考虑这些选项,当 ASP .Net 应用程序在 IIS 中停止时,AppDomain.CurrentDomain.ProcessExit 似乎也不会被调用。Global.Application_End 特定于 ASP .Net。因此,这两种选择都不兼容这两种情况。

如果它有助于有一个具体的例子来说明为什么需要这样做......在这种特殊情况下,它使用 SqlDependency (据我了解)需要调用 SqlDependency.Start 进行初始化并调用 SqlDependency.Stop 在应用程序之前终止。

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

4

1 回答 1

1

看来,此 SO 答案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 这样的代码暂存器环境,~Finalizer 可能在暂存器应用程序本身关闭之前不会触发)

于 2013-11-13T15:08:08.237 回答