我熟悉 try{}finally{} 模式,using(){} 模式作为确保 Dispose() 被调用的方法,但是对于 ASP.NET 页面,Dispose 是否同样安全在 Page_Unload 事件的页面范围内创建的对象?改写 Page 的 Dispose() 方法是否有意义?
我不确定是什么代码引发了 Page_Unload 事件或 Page Dispose() 方法,所以我不知道它会运行的保证是什么。
最佳答案
卸载事件在处理之前的控件生命周期中引发。由于页面本身是一个控件,因此也会为它引发卸载事件。您添加到页面的每个控件都将成为页面生命周期的一部分。所以如果你有一个需要做一些清理的控件,控件本身应该自己处理任何可能的清理。如果控件已添加到页面并正确遵循封装原则,则您不必担心这一点。
documentation说你甚至应该使用它来“对特定控件进行最终清理,例如关闭特定于控件的数据库连接。”我的建议是避免卸载事件。如果可能,尽早执行任何清理代码,所以尽可能使用“using”。在某种程度上,这就像在使用“全局”变量和局部变量之间做出选择,后者更可取。
关于c# - 可以相信 Page_Unload 将始终运行并且是放置 Dispose() 代码的好地方吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/703836/