J'ai une classe qui représente un document (GH_Document). GH_Document a une méthode d'enregistrement automatique qui est appelée avant chaque opération potentiellement dangereuse. Cette méthode crée (ou remplace) un fichier AutoSave à côté du fichier d'origine.C# AutoSave cleanup; meilleur entrainement?
GH_Document contient également une méthode appelée DestroyAutoSaveFiles() qui supprime tous les fichiers du disque qui ont été créés par la fonction AutoSave. J'appelle cette méthode sur les documents lorsque l'application se ferme, et aussi lorsque les documents sont déchargés. Cependant, il semble que j'ai manqué quelques cas puisque les fichiers AutoSave sont toujours présents après quelques arrêts réussis.
Donc, cela m'a fait réfléchir. Quelle est la meilleure façon de gérer des situations comme celle-ci? Dois-je repérer toutes les manières possibles de supprimer des documents et ajouter une logique de nettoyage automatique? Ou devrais-je implémenter IDisposable et effectuer un nettoyage dans GH_Document.Dispose()? Ou devrais-je le faire dans GH_Document.Finalize()?
La seule fois où je veux qu'un fichier de sauvegarde automatique reste sur le disque, c'est que l'application plante. Dispose et Finalize sont-ils garantis pour ne pas être appelés en cas de crash?
Merci Mark, qui exclut à peu près l'approche Finalize. Mon application s'exécute en tant que plug-in géré dans un environnement non géré et la plupart des plantages se produisent en raison d'exceptions C++ non gérées, de débordements de mémoire ou d'exceptions gérées entraînant le blocage de l'application de base. Je ne peux pas détruire TOUS les fichiers d'enregistrement automatique, car les utilisateurs peuvent exécuter plusieurs instances de mon application, et une instance ne doit pas supprimer les fichiers d'enregistrement automatique d'une autre. De plus, les gens ne pourront pas trouver ce dossier 'spécial', cela mettrait un fardeau supplémentaire sur le support. Je pense que je vais juste devoir rendre le nettoyage étanche. –