|
2 / 2 / 1
Регистрация: 26.02.2011
Сообщений: 64
|
||||||
Освобождение ресурсов при удаленнии объекта11.03.2011, 08:51. Показов 6594. Ответов 13
Метки нет (Все метки)
Здравствуйте.
Используется простое консольное приложение. Есть объект, который пользуется внешними ресурсами, которые не могут быть очищены сборщиком мусора. Приложение все время закрывается нажатием на крестик в углу окна. Пытался освободить эти ресурсы при выходе из программы с помощью деструктора, но он, почему-то, не вызывается. Думал про перехват события закрытия приложения, но хотелось бы, все же, сделать правильным способом через структура класса.
0
|
||||||
| 11.03.2011, 08:51 | |
|
Ответы с готовыми решениями:
13
Освобождение управляемых ресурсов Освобождение ресурсов и ошибка System.NullReferenceException Gdiplus - освобождение ресурсов GDI |
|
138 / 138 / 42
Регистрация: 02.11.2010
Сообщений: 316
|
|
| 11.03.2011, 09:10 | |
|
Поставь брейкпоинт внутри деструктора, проверь входит ли он в него вообще, если да, то надо смотреть на логику функции CloseLDevice() может там косяк какой.
1
|
|
|
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
|
||||||
| 11.03.2011, 09:12 | ||||||
1
|
||||||
|
2 / 2 / 1
Регистрация: 26.02.2011
Сообщений: 64
|
|||
| 11.03.2011, 10:08 [ТС] | |||
|
Добавлено через 47 минут Нашел как брейкпоинты ставить. Дописал интерфейс IDisposable. Но Dispose() не вызывается. Брейкпоинт не срабатывает. =( Т.е. не вызывается именно при завершении приложения нажатием на крестик в окне. Если же завершить приложении нормально, то Dispose() достигается.
0
|
|||
|
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
|
|
| 11.03.2011, 11:01 | |
|
Обратно, непонятно как там и что написано у вас, а телепаты как раз в отпуске...
0
|
|
|
84 / 84 / 14
Регистрация: 15.02.2011
Сообщений: 252
|
|
| 11.03.2011, 11:06 | |
|
Объект не будет собран сборщиком мусора, пока подписан на события.
Попробуйте System.GC
0
|
|
|
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
|
||
| 11.03.2011, 11:10 | ||
Я же написал, что надо явно вызывать метод Dispose(), для чего когда его придумали?
0
|
||
|
2 / 2 / 1
Регистрация: 26.02.2011
Сообщений: 64
|
|||
| 11.03.2011, 11:18 [ТС] | |||
|
Сделал для себя вывод, что деструктор не вызывается, если процесс резко прерывается, что и происходит, если консольное приложение закрывать через крестик на окне. Придется забиндить выход приложения на Esc и только так закрывать. Надеюсь, после переноса класса в WPF приложение, деструктор класса при закрытии окна будет вызваться.
0
|
|||
|
213 / 139 / 8
Регистрация: 18.08.2010
Сообщений: 1,018
|
|
| 09.11.2012, 17:17 | |
|
еще проще: обернуть код, где используется ваш этот объект, в блок using. Тогда метод Dispose() будет гарантированно вызываться при выходе из блока
0
|
|
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|
| 09.11.2012, 20:41 | |
|
Exvel, при закрытии приложения уничтожается его домен, а вместе с ним освобождаются любые ресурсы, управляемые и неуправляемые.
Потому смысла в запуске сборщика при завершении приложения нет. А если бы и запускался сборщик, то начались бы жалобы, что приложение долго закрывается.
0
|
|
|
4 / 4 / 2
Регистрация: 25.02.2009
Сообщений: 40
|
||||||
| 29.03.2013, 10:21 | ||||||
|
Здравствуйте. Подскажите пожалуйста почему не вызывается деструктор объекта "a" при вызове GC.Collect(). Хотя я даже симулирую какую то работу с памятью ...
И ещё, подскажите пожалуйста, если у нас имеется объект A, который содержит всякую всячину и переменную string s; Есть второй объект B, который содержит переменную string j; Во время выполнения программы, j объекта B присваивается s объекта A. И потом A = null. Уничтожится ли вся остальная чаcть A, кроме string s, т.к. она уже недоступна?)
0
|
||||||
|
Заблокирован
|
|||||||
| 29.03.2013, 10:55 | |||||||
1
|
|||||||
|
|
|||||||
| 29.03.2013, 12:07 | |||||||
1
|
|||||||
| 29.03.2013, 12:07 | |
|
Помогаю со студенческими работами здесь
14
Освобождение ресурсов OpenGL при закрытии программы Освобождение ресурсов при получении терминирующего сигнала Освобождение ресурсов Освобождение ресурсов try with resources
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|