![]() |
1
65
在呈现视图后调用Dispose, 总是 .
在调用中呈现视图
由于在呈现视图时控制器位于调用堆栈中,因此无法在该时候释放它。 |
![]() |
2
36
只是为了扩大 Craig Stuntz's Answer : 控制器工厂在释放控制器时进行处理。在实现IControllerFactory接口时,需要实现的方法之一是ReleaseController。 我不确定您使用的是哪个ControllerFactory,您是否使用自己的ControllerFactory,但是在Reflector中,在查看DefaultControllerFactory时,ReleaseController方法是这样实现的:
传入IController引用,如果该控制器实现IDisposable,则调用该控制器Dispose方法。因此,如果在请求完成后(即视图呈现之后)有任何需要处理的内容。从IDisposable继承并将逻辑放入Dispose方法以释放任何资源。 releaseController方法由处理请求的system.web.mvc.mvchandler调用,并实现IHttphandler。processRequest接收给它的httpContext,并通过调用已实现的ControllerFactory来启动查找控制器以处理请求的过程。如果查看processRequest方法,您将看到调用ControllerFactory的ReleaseController的finally块。仅当控制器返回viewresult时才调用此函数。 |
![]() |
codeforester · 测量GC暂停时间的最佳方法是什么? 6 年前 |
![]() |
Venki WAR · 需要解释G1的并行完整GC 6 年前 |
![]() |
Stephan_Berlin · 为什么CMS系列中的初始标记阶段 6 年前 |
![]() |
Bonsaisteak · 为什么年轻一代需要三个区域来收集垃圾? 6 年前 |
![]() |
goks · 如何清除熊猫的数据帧内存? 6 年前 |