в моей программе я могу загрузить каталог: ICatalog
Каталог здесь содержит множество пересчитанных структур (коллекции IItems, IElements, IRules и др.)
когда я хочу перейти в другой каталог,
Я загружаю новый каталог
но автоматическое освобождение предыдущего экземпляра ICatalog требует времени, замораживая мое приложение на 2 секунды или более.
мой вопрос:
Я хочу отложить выпуск старого (и более не использованного) экземпляра ICatalog в другой поток.
Я еще не проверял это, но я намереваюсь создать новую тему с:
ErazerThread.OldCatalog := Catalog; // old catalog refcount jumps to 2
Catalog := LoadNewCatalog(...); // old catalog refcount =1
ErazerThread.Execute; //just set OldCatalog to nil.
таким образом, я ожидаю, что релиз произойдет в потоке, а мое приложение не
быть замороженным больше.
Это безопасно (и хорошая практика)?
У вас есть примеры существующего кода, уже выполняющего выпуск аналогичным методом?