![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| -ser- |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 1.2.2005 Репутация: 5 Всего: 13 |
Создал простенький класс А без какого-либо наследования, который работает с базой данных и файл-стримами.
затем в методах других классов обявляю instance класса А и все работает превосходно, но прочитал мелкомягких о IDisposable.Dispose Methodе:
да, есть у меня в моем классе А те же файл-стримы, которые я там создаю, читаю и закрываю, и как я понял из вышенаписанного они являются unmanaged resource'ами. Допустим. Hо никакие интерфейсы я не наследовал и не реализовывал. Получается что instancе'ы класса А у меня не освобождаются автоматически при выходе из вызывающих методов? -------------------- "Тонкая, однако, работа." |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Сразу по выходу из метода - не освобождаются. Если ссылок на объект А больше нету, он помечается как кандидат на удаление при следующей сборке мусора, а уж когда она будет выполняться - это одному GC известно
-------------------- ![]() |
|||
|
||||
| -ser- |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 1.2.2005 Репутация: 5 Всего: 13 |
То есть, если я правильно понял, если это не критически в плане время+ресурсы, то об этом можно с чистой совестью забыть и положиться на GC, а это 99.9% случаев. (я то где-то читал что GC запускается приблизительно каждую ms.)
получается, IDisposable это предлагаемый способ, но ресурсы можно освобождать и без него? -------------------- "Тонкая, однако, работа." |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Если речь идёт о файлах, то "с чистой совестью забыть" может привести к тому, что файл некоторое время останется открытым (и возможно заблокированным, если не был выставлен какой-нибудь из FileShare.xxx при создании FileStream). Каждую миллисекунду GC вроде как не вызывается... хотя точно не уверен
-------------------- ![]() |
|||
|
||||
| -ser- |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 1.2.2005 Репутация: 5 Всего: 13 |
насчет файлов, почему он может остаться открытым, если после работы с ним мы его преспокойненько закроем, наверно ты имел ввиду handle на него. да пусть он висит пока мусорщик не придет. А тем временем мы создадим новый instance и соответственно новый handle. И если речь идет не о многопоточности, выходит, ничего смертельного в этом нет.
Насчет GC тоже не буду утверждать, ибо источник не помню. -------------------- "Тонкая, однако, работа." |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Тогда Ok Просто есть люди, которые поработав с объектом потока, "бросают" его, не заботясь о закрытии. -------------------- ![]() |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |