Использование оператора «Using» с адаптерами таблицы типизированных наборов данных - PullRequest
3 голосов
/ 11 августа 2010

Простой вопрос. Важно ли использовать оператор using при работе с адаптерами таблиц типизированных наборов данных? Большинство примеров, которые я видел в сети, никогда не используют оператор using.

using (Data_ItemTableAdapter adapter = new Data_ItemTableAdapter())
{

    DataItemTable = a.GetDataByDataItemID(DataItemID);
    // more code here
}

Спасибо за вашу помощь !!

Редактировать: Похоже, что общий консенсус заключается в том, что, вероятно, будет хорошей идеей использовать «использование» в этой ситуации, потому что это определенно не повредит, и это не требует больших усилий. Просто не уверен, стоит ли возвращаться к этому старому проекту и менять весь код. Спасибо за совет!

Ответы [ 4 ]

6 голосов
/ 11 августа 2010

Если класс реализует интерфейс IDisposable, то, вероятно, безопаснее обернуть объект в using статистику или вызвать метод Dispose вручную.

В этом случае я не верю, что адаптер данных использует какие-либо неуправляемые ресурсы, поэтому утилизация, вероятно, не делает ничего существенного. Однако было бы безопаснее обернуть это, потому что в будущем это могло бы.

4 голосов
/ 11 августа 2010

Если кто-то реализует IDisposable, я рекомендую оборачивать его с помощью () большую часть времени.Автоматический вызов Dispose () + Try / Наконец бесплатно?Трудно победить.

2 голосов
/ 11 августа 2010

Если что-то реализует, то это означает, что он, вероятно, реализовал собственный финализатор. Вызов dispose должен (если написано правильно) подавить CG от его вызова. Если CG требуется для вызова финализатора класса, CG придется выполнить дополнительную работу по удалению объекта из памяти. Он будет продвигать его на следующий уровень компьютерной графики, поэтому объект будет оставаться в памяти гораздо дольше.

Так что, даже если вы не думаете, что это так важно называть, в любом случае, это, вероятно, хорошая идея, поскольку, скорее всего, это позволит более эффективно собирать мусор. По правде говоря, если есть Dispose, он, вероятно, существует по какой-то причине и должен использоваться. Поместить его в оператор using - действительно самый простой способ справиться с этим.

Информация о Финализаторах и GC в .NET

2 голосов
/ 11 августа 2010

В данном конкретном случае это не страшно, но нужно знать, что вам нужно глубоко погрузиться в адаптер.

В общем, это определенно не повредит, поэтому, если сомневаетесь, и если у него есть Dispose (), используйте using.

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