我想知道 IDisposable 对象是否会在 session 结束时释放。
我知道,我可以自己处理 session 结束事件。但是我想写一个 IDisposable 类。
比如我有
public class MyObject : IDisposable
{
// some properties
public void Dispose()
{
// disposing
}
}
我需要在 session 结束时处理这个对象:
protected void Session_End(object sender, EventArgs e)
{
if (Session["key"] != null)
((MyObject)Session["key"]).Dispose();
}
所以,我想知道在 session 结束时该操作会自动执行,或者我需要按上面的方式编写。
最佳答案
Session_End 不会自动处理 IDisposable 对象,因此您的 Session_End 解决方案是正确的。
但是:
- Session_End 仅在您使用“inproc” session 时调用(但对于其他类型,您需要一个可序列化的对象)
- 它仅在 session 超时到期后调用,因此您将此资源额外保留 20 分钟(或任何超时时间)
因此,请尝试找到一种不需要在 Session 中存储 IDisposable 对象的解决方案。
关于c# - session 可以在 session 结束时间调用 dispose 方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12347044/