在aspx页面中使用System.Reflection后是否需要清理?

时间:2014-03-03 01:48:18

标签: c# asp.net system.reflection

我在我的应用中重新加载某些页面时调用了以下方法。关键是要中断当前事务,请求身份验证并在返回页面时调用指定的函数以完成事务。 State和方法名称在临时中保存在Session中。

重定向回页面后,该方法执行,一切看起来都很好,但是当点击指向同一页面的链接时,它现在只显示相同的页面,而不是具有空字段等的新页面,并且没有页面事件火。最终,如果我离开页面足够长,可能是5分钟,它将刷新页面或单击带有Response.Redirect调用的按钮将执行此操作。

通常没有反射调用相同的页面方法,它看起来没问题。似乎使用反射可能会将页面对象保留在内存中而不允许它进行GCed。这里发生了什么?有很多变通方法,但我仍然希望将来能够理解它。

protected override void OnLoadComplete(EventArgs e)
{
    base.OnLoadComplete(e);
    if (IsRestoredPageState && priorPageState.CallingFunction != null)
    {
        var completeAction = this.GetType().GetMethod(priorPageState.CallingFunction);
        completeAction.Invoke(this, null);
        completeAction = null;
    }
}

0 个答案:

没有答案