我们有一个IDisposable资源,虽然它是无状态且线程安全的,但实例化的成本相对较高。所以...我们决定使用标准的单例模式进行换行,并对所有请求重复使用单个实例,直到app-pool循环使用。
考虑到这一点,我们仍然希望尽可能以确定的方式调用Dispose()。
问题是......假设我们有机会在关闭的情况下保持优雅,那么处理这些资源的适当位置是什么?例如......
对于上下文,该应用程序是ASP.NET MVC 4。
protected void Application_Disposed(Object sender, EventArgs e)
{
CleanUpResources();
}
或......
protected void Application_End(Object sender, EventArgs e)
{
CleanUpResources();
}
答案 0 :(得分:1)
资源是托管还是非托管?如果是托管,请使用Application_End
,否则请使用Application_Disposed
。有关详细信息,请参阅https://msdn.microsoft.com/en-us/library/ms178473.aspx。
答案 1 :(得分:1)
我知道挂钩应用程序结束事件的最可靠方式是IRegisteredObject
。我不了解Application_End
的可靠性。