atr*_*joe 5 .net c# sharepoint dispose memory-leaks
这是否包含内存泄漏?我一直在努力更好地了解内存泄漏,但我不知道我是否已经纠正了这个问题?如果没有,我该如何正确处理SPweb对象和SPSite对象?
using (SPWeb oWebsite = new SPSite(webUrl).OpenWeb()) //Open SP Web
{
SPListCollection collList = oWebsite.Lists; //Open Lists
foreach (SPList oList in collList)
//For Each List Execute this
{
if (!oList.Hidden)
//If the list is hidden do this else nothing
{
ListSitesDropDownBox.Items.Add(new ListItem(SPEncode.HtmlEncode(oList.Title), SPEncode.HtmlEncode(oList.Title)));
ViewState["Item" + counter] = SPEncode.HtmlEncode(oList.Title);
counter++;
}
}
}
Run Code Online (Sandbox Code Playgroud)
Dan*_*mov 14
是的,确实如此.你处置SPWeb但忘记处置SPSite.
正确的方法:
using (var site = new SPSite(webUrl))
using (var web = site.OpenWeb()) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
请注意,这相当于:
using (var site = new SPSite(webUrl)) {
using (var web = site.OpenWeb()) {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
但我省略了外部的大括号using以减少代码嵌套.支撑规则与之相同if.
一些风格的评论:
list.重新编写上述代码的注释没有任何意义.保持建设性,即解释代码的目的.而不是那四条评论,你应该在开头写这样的东西:
// Populate drop-down list with list names and save them in ViewState
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
1186 次 |
| 最近记录: |