| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > вопрос о Dispose и FileStream |
| Автор: -ser- 5.4.2005, 09:28 | ||
| Создал простенький класс А без какого-либо наследования, который работает с базой данных и файл-стримами. затем в методах других классов обявляю instance класса А и все работает превосходно, но прочитал мелкомягких о IDisposable.Dispose Methodе:
да, есть у меня в моем классе А те же файл-стримы, которые я там создаю, читаю и закрываю, и как я понял из вышенаписанного они являются unmanaged resource'ами. Допустим. Hо никакие интерфейсы я не наследовал и не реализовывал. Получается что instancе'ы класса А у меня не освобождаются автоматически при выходе из вызывающих методов? |
| Автор: mr.DUDA 5.4.2005, 09:32 |
| Сразу по выходу из метода - не освобождаются. Если ссылок на объект А больше нету, он помечается как кандидат на удаление при следующей сборке мусора, а уж когда она будет выполняться - это одному GC известно |
| Автор: -ser- 5.4.2005, 09:56 | ||
То есть, если я правильно понял, если это не критически в плане время+ресурсы, то об этом можно с чистой совестью забыть и положиться на GC, а это 99.9% случаев. (я то где-то читал что GC запускается приблизительно каждую ms.)
получается, IDisposable это предлагаемый способ, но ресурсы можно освобождать и без него? |
| Автор: mr.DUDA 5.4.2005, 10:02 |
| Если речь идёт о файлах, то "с чистой совестью забыть" может привести к тому, что файл некоторое время останется открытым (и возможно заблокированным, если не был выставлен какой-нибудь из FileShare.xxx при создании FileStream). Каждую миллисекунду GC вроде как не вызывается... хотя точно не уверен |
| Автор: -ser- 5.4.2005, 10:19 |
| насчет файлов, почему он может остаться открытым, если после работы с ним мы его преспокойненько закроем, наверно ты имел ввиду handle на него. да пусть он висит пока мусорщик не придет. А тем временем мы создадим новый instance и соответственно новый handle. И если речь идет не о многопоточности, выходит, ничего смертельного в этом нет. Насчет GC тоже не буду утверждать, ибо источник не помню. |
| Автор: mr.DUDA 5.4.2005, 10:29 | ||
Тогда Ok Просто есть люди, которые поработав с объектом потока, "бросают" его, не заботясь о закрытии. |