public static void Save(string path, string documentElementName, Action saveAction) { try { SafeSaver.CleanSafeSaverFiles(path); if (!File.Exists(SafeSaver.GetFileFullPath(path))) { SafeSaver.DoSave(SafeSaver.GetFileFullPath(path), documentElementName, saveAction); } else { SafeSaver.DoSave(SafeSaver.GetNewFileFullPath(path), documentElementName, saveAction); try { SafeSaver.SafeMove(SafeSaver.GetFileFullPath(path), SafeSaver.GetOldFileFullPath(path)); } catch (Exception ex) { Log.Warning("Could not move file from \"" + SafeSaver.GetFileFullPath(path) + "\" to \"" + SafeSaver.GetOldFileFullPath(path) + "\": " + ex); throw; } try { SafeSaver.SafeMove(SafeSaver.GetNewFileFullPath(path), SafeSaver.GetFileFullPath(path)); } catch (Exception ex2) { Log.Warning("Could not move file from \"" + SafeSaver.GetNewFileFullPath(path) + "\" to \"" + SafeSaver.GetFileFullPath(path) + "\": " + ex2); SafeSaver.RemoveFileIfExists(SafeSaver.GetFileFullPath(path), false); SafeSaver.RemoveFileIfExists(SafeSaver.GetNewFileFullPath(path), false); try { SafeSaver.SafeMove(SafeSaver.GetOldFileFullPath(path), SafeSaver.GetFileFullPath(path)); } catch (Exception ex3) { Log.Warning("Could not move file from \"" + SafeSaver.GetOldFileFullPath(path) + "\" back to \"" + SafeSaver.GetFileFullPath(path) + "\": " + ex3); } throw; } SafeSaver.RemoveFileIfExists(SafeSaver.GetOldFileFullPath(path), true); } } catch (Exception ex4) { GenUI.ErrorDialog("ProblemSavingFile".Translate(SafeSaver.GetFileFullPath(path), ex4.ToString())); throw; } }
private static void CleanSafeSaverFiles(string path) { SafeSaver.RemoveFileIfExists(SafeSaver.GetOldFileFullPath(path), true); SafeSaver.RemoveFileIfExists(SafeSaver.GetNewFileFullPath(path), true); }