У меня есть класс, представляющий документ (GH_Document). GH_Document имеет на нем метод AutoSave, который вызывается перед каждой потенциально опасной операцией. Этот метод создает (или перезаписывает) файл AutoSave рядом с исходным файлом.C# AutoSave cleanup; лучшая практика?
GH_Document также содержит метод DestroyAutoSaveFiles(), который удаляет все и все файлы с диска, созданные функцией AutoSave. Я вызываю этот метод на документы, когда приложение закрывается, а также когда документы разгружаются. Однако, похоже, я пропустил несколько случаев, поскольку файлы AutoSave все еще присутствуют после некоторых успешных остановок.
Так что это заставило меня задуматься. Каков наилучший способ справиться с такими ситуациями? Должен ли я отслеживать все возможные способы, с помощью которых документы могут исчезнуть и добавить логику автоматической очистки во всем мире? Или я должен реализовать IDisposable и выполнить очистку в GH_Document.Dispose()? Или я должен делать это в GH_Document.Finalize()?
Единственный раз, когда я хочу, чтобы файл автосохранения оставался на диске, это если приложение сработает. Гарантируется ли «Утилизация и Финализация» не вызывать в случае аварии?
Благодарю Марка, что в значительной степени исключает подход Finalize. Мое приложение работает как управляемый плагин в неуправляемой среде, и большинство сбоев происходит из-за необработанных исключений C++, переполнения памяти или управляемых исключений, которые, в свою очередь, приводят к сбою базового приложения. Я не могу уничтожить ВСЕ файлы автосохранения, так как у людей может быть несколько экземпляров моего приложения, и один экземпляр не должен удалять файлы автосохранения из другого. Кроме того, люди не смогут найти эту «специальную» папку, это добавит дополнительную нагрузку на поддержку. Думаю, мне просто нужно сделать очистку водонепроницаемой. –