Читатель закройте и утилизируйте - PullRequest
0 голосов
/ 06 октября 2011

Пожалуйста, посмотрите на код. у нас есть такой метод, который возвращает читателя. т.е.

public IRecordsReader GetValues()
{
   IRecordsReader TestReader.....

   return TestReader;
}

и мы вызываем этот метод внутри другого метода, подобного этому

IRecordsReader ResultReader = GetValues();
ResultReader.Close();
ResultReader.Dispose();

то есть мы закрываем и утилизируем этот читатель.

Я сомневаюсь, что мы неправильно закрываем TestReader в методе GetValues(). Так ли это вызовет какие-либо проблемы пула соединений? Пожалуйста, дайте ваши предложения.

1 Ответ

1 голос
/ 06 октября 2011

Вам, вероятно, следует обернуть SqlDataReader с помощью, чтобы он автоматически закрывал и удалял объект IDisposable.

Как показано ниже

using(IRecordsReader ResultReader = GetValues())
{
//do your stuff
}
//resultReader is closed and disposed from now

Подробнее

так как вы делаете это

public IRecordsReader GetValues()
{
   IRecordsReader TestReader.....

   return TestReader;
}

и это

IRecordsReader ResultReader = GetValues()

это то, что вы на самом деле делаете

IRecordsReader ResultReader = TestReader

поэтому вы косвенно закрываете / удаляете экземпляр TestReader. Ты понял?. Вставьте его в код и попробуйте узнать:)

Ответ

ОП спросили - So whether it will cause any connection pool issues? Please give your suggestions.

Если ваш лимит подключений не превышен, у вас не возникнет проблем. Но так как вы закрываете и утилизируете ресурс, у вас не будет никаких проблем:)

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