powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Использование Using
12 сообщений из 12, страница 1 из 1
Использование Using
    #39393034
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
Ключевое слово using имеет два основных применения.
1. В качестве директивы, когда оно используется для создания псевдонима пространства имен или импорта типов, определенных в других пространствах имен. См. раздел Директива using.
2. В качестве инструкции, когда оно определяет область, в конце которой объект будет удален. 


Меня интересует п2.

Скажите, на сколько это актуально для Вэб серверов, например, после запроса к БД ?
Надо ли лихорадочно использовать Using или оставить всё на усмотрение GC ?
...
Рейтинг: 0 / 0
Использование Using
    #39393052
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_BСкажите, на сколько это актуально для Вэб серверов, например, после запроса к БД ?

Для веб-серверов, если объект должен жить в контексте запроса, то используются DI-контейнеры, которые реализуют using на более высоком уровне.

Это не означает, что using не может использоваться для объектов с очень коротким жизненным циклом.


Valery_BНадо ли лихорадочно использовать Using или оставить всё на усмотрение GC ?

При чём тут GC? У using немного другая задача, отличающаяся от задач GC.
...
Рейтинг: 0 / 0
Использование Using
    #39393060
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttПри чём тут GC? У using немного другая задача, отличающаяся от задач GC.
У них задача - освободить память.
Если я правильно понимаю, new SQLConnection будет удалён через интерфейс IDisposable после использования Using
Если не использовать Using, то он будет удалён GC, когда тот захочет.
...
Рейтинг: 0 / 0
Использование Using
    #39393113
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_BhVosttПри чём тут GC? У using немного другая задача, отличающаяся от задач GC.
У них задача - освободить память.
Если я правильно понимаю, new SQLConnection будет удалён через интерфейс IDisposable после использования Using
Если не использовать Using, то он будет удалён GC, когда тот захочет.

1. ну не совсем удален сразу, через Using уберется хедлер на соединение и оно вернется в пул соединений, объект SQLConnection удалиться позже так как на него не будет ссылок уже самими CG, в рамках Connection пул конекшенов ограниченный и вызывать dispose в рамках операции следуют и не надеется на CG.
2. SQLConnection возможно и удалиться сам посредством CG, я внутренности не помню уже, но крайне рекомендую. но когда пишешь свои классы которые используются неуправляемые ресурсы, реализовать IDisposable надо по причине что финализатор не знает о внутренних ресурсах ничего, он вызовет финализатор и все, привет утечки памяти. ну ты можешь конечно в финализаторе вызвать dispose каждого объекта, но по первой причине управляют такими ресурсами руками либ посредством IOC.
...
Рейтинг: 0 / 0
Использование Using
    #39393161
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_B,
имхо add
3. На собственные нужды.
по моему в transactionscope, и в еще одном хитром типе.
...
Рейтинг: 0 / 0
Использование Using
    #39393239
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так в частности на SQLConnection надо ставить Using ?
...
Рейтинг: 0 / 0
Использование Using
    #39393301
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_B,

видишь IDisposable ставь
...
Рейтинг: 0 / 0
Использование Using
    #39393321
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_BУ них задача - освободить память.
Если я правильно понимаю, new SQLConnection будет удалён через интерфейс IDisposable после использования Using
Если не использовать Using, то он будет удалён GC, когда тот захочет.

Неправильно. У using задача вызвать Dispose у объекта при выходе из блока. У Dispose задача, освободить ресурсы (не память!). У GC задача, собрать мусор и очистить память.

Рекомендую осознать строгую разницу.
...
Рейтинг: 0 / 0
Использование Using
    #39393662
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_BТак в частности на SQLConnection надо ставить Using ?
Если в web, то да. Иначе рискуете выбрать пул и начнут сыпаться исключения и приложение перестанет работать.
...
Рейтинг: 0 / 0
Использование Using
    #39393919
ntkrnlmp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Valery_B,

Надо. И SQLConnection, и FileStream, и вообще все, что реализует IDisposable и больше не требуется надо диспозить.

Надо понимать, что помимо памяти, некоторые объекты используют еще и другие виды ресурсов. Например, те же подключения к БД. И если вы не закрывали подключение вручную, то оно будет закрыто только в момент выполнения финализатора. Но когда это случится - неизвестно.
...
Рейтинг: 0 / 0
Использование Using
    #39394395
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ntkrnlmpValery_B,
Надо понимать, что помимо памяти, некоторые объекты используют еще и другие виды ресурсов.
Так я это понимаю...
По этому у меня везде написано так:

Код: c#
1.
2.
3.
4.
5.
6.
7.
   try
    SQLConnection1.Open();
    {...}
   finally
    {
     SQLConnection.Close();
    }
...
Рейтинг: 0 / 0
Использование Using
    #39394498
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Использование Using
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]