示例#1
0
 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;
     }
 }
示例#2
0
 private static void CleanSafeSaverFiles(string path)
 {
     SafeSaver.RemoveFileIfExists(SafeSaver.GetOldFileFullPath(path), true);
     SafeSaver.RemoveFileIfExists(SafeSaver.GetNewFileFullPath(path), true);
 }