Должен ли я использовать «использование» при получении объекта из SPContext? - PullRequest
2 голосов
/ 03 декабря 2010

В настоящее время я получаю коллекцию SPListItemCollection следующим образом:

SPContext.Current.Web.List("Multimedia").GetItems(query)

Согласно статье Microsoft, «объекты SPContext управляются средой SharePoint и не должны явно размещаться в вашем коде».

У меня вопрос: должен ли я заключить вышеуказанный код в блок использования?Или я не должен, учитывая, что это происходит от объекта SPContext?Спасибо.

Ответы [ 5 ]

5 голосов
/ 03 декабря 2010

Дело даже не в SPContext - SPListItemCollection не реализует IDisposable и не может быть утилизирован.

Если я не правильно понял ваш вопрос?

5 голосов
/ 04 декабря 2010

На этот вопрос уже дан ответ, но я настоятельно рекомендую статью SharePoint 2007 и WSS 3.0 «Утилизировать шаблоны по примеру» для каждого разработчика SharePoint, сталкивающегося с до Dispose() или без Dispose() дилемма.

Статья очень подробная и примеры кода великолепны - на скриншоте ниже показано, что вы пропустите, если не прочитаете:

Пример раздела - Метод Microsoft.SharePoint.SPSite.OpenWeb () :

Example section - Microsoft.SharePoint.SPSite.OpenWeb() method

2 голосов
/ 03 декабря 2010

Не следует избавляться от объекта SPWeb, полученного из SPContext, поскольку это может привести к ошибкам, особенно в SP 2010

1 голос
/ 07 декабря 2010

Не забудьте запустить официальный SharePoint Dispose Checker против вашего кода.Он найдет много недостающих утилит.

SPDisposeCheck - это инструмент, который поможет вам проверить ваши сборки, использующие API-интерфейс SharePoint, чтобы вы могли создавать более качественный код.Он предоставляет помощь в правильной утилизации определенных объектов SharePoint, чтобы помочь вам следовать опубликованным рекомендациям.Этот инструмент может не отображать все утечки памяти в вашем коде.Дальнейшее расследование рекомендуется, если вы продолжаете испытывать проблемы.

1 голос
/ 05 декабря 2010

Если он реализует IDisposable и вы создали самостоятельно, то вы должны утилизировать его. Это не только для разработки SharePoint. Как правило, если вы можете ответить на эти два вопроса утвердительно для любого объекта, с которым вы работаете, вы должны избавиться от него (или использовать , используя )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...