Форум программистов «Весельчак У»
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
Начало
Наши сайты
Галерея
Весельчак У
Наша Вики
Хранилище
Проекты
Правила
Правила форума
Правила русского языка
Помощь
Поиск
Календарь
Почта
Войти
Регистрация
Форум программистов «Весельчак У»
>
Программирование
>
.NET технология от и до
> Тема:
Закрытие файла
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Закрытие файла (Прочитано 12249 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ezus
Опытный
Offline
Закрытие файла
«
:
11-01-2016 07:27 »
Добрый день.
Есть большой файл, который обрабатывается порциями, поэтому он остается открытым.
В начале я его открываю.
А где я его могу гарантировано закрыть?
Выход из программы может произойти в другом месте, ничего не знающем о существовании этого файла.
В С++ есть диструктор, а какая ему аналогия в С#?
Записан
Dale
Блюзмен
Команда клуба
Offline
Пол:
Re: Закрытие файла
«
Ответ #1 :
11-01-2016 07:39 »
Инструкция
using
подойдет? Или
try ... finally
, что в принципе то же самое.
Записан
Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.
Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard
Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
ezus
Опытный
Offline
Re: Закрытие файла
«
Ответ #2 :
11-01-2016 08:53 »
Цитата: Dale от 11-01-2016 07:39
Инструкция
using
подойдет? Или
try ... finally
, что в принципе то же самое.
К сожалению нет, т.к. файл читается порционно
Записан
Dale
Блюзмен
Команда клуба
Offline
Пол:
Re: Закрытие файла
«
Ответ #3 :
11-01-2016 09:21 »
Если открыть файл в главной программе, секция завершения отработает при выходе из блока, и ее совершенно не интересует, как именно будет читаться файл.
Полного аналога деструктора в C# не существует в принципе, поскольку физическим уничтожением объектов занимается сборщик мусора по своему усмотрению, а он вызывается в непредсказуемые моменты времени (а может и не вызваться вовсе, если необходимости в утилизации памяти не возникнет).
Записан
Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.
Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard
Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
ezus
Опытный
Offline
Re: Закрытие файла
«
Ответ #4 :
11-01-2016 11:06 »
Я правильно понимаю, что при окончании программы по ЛЮБОЙ причине файловый ресурс будет освобожден? Даже если программа стартовалась из-под студии?
Записан
Dale
Блюзмен
Команда клуба
Offline
Пол:
Re: Закрытие файла
«
Ответ #5 :
11-01-2016 11:42 »
Согласно документации, финализатор не работает в двух случаях:
1. Зацикливание программы (ну тут все логично: до конца блока управление не доходит, значит, и финализатор останется не у дел).
2. Завершение потока, в котором выполнялся блок (опять же очевидно: если поток завершился, то и завершающий код выполнить некому).
Записан
Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.
Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard
Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
Qulac
Постоялец
Offline
Re: Закрытие файла
«
Ответ #6 :
11-01-2016 11:50 »
ezus
, грубо говоря в этом случае действие не определено для любого ресурса. Например сетевой сокет если не был освобожден явно и программа закрылась, живет еще несколько секунд. Но так может быть не всегда, поэтому ресурс нужно освобождать явно.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Форум программистов «Весельчак У»
>
Программирование
>
.NET технология от и до
> Тема:
Закрытие файла
Загружается...