示例#1
0
 public void Add(SaveScheduleInfo scheduleInfo)
 {
     if (!saveQueue.Contains(scheduleInfo))
     {
         saveQueue.Enqueue(scheduleInfo);
     }
 }
示例#2
0
 public void SaveAll()
 {
     while (saveQueue.Count > 0)
     {
         SaveScheduleInfo scheduleInfo = saveQueue.Dequeue();
         Save(scheduleInfo);
     }
     logger.LogInfo($"Saving done.");
 }
示例#3
0
 public override bool Equals(object obj)
 {
     if (obj is SaveScheduleInfo)
     {
         SaveScheduleInfo other = obj as SaveScheduleInfo;
         return(other.settings.Equals(settings) && other.path.Equals(path));
     }
     else
     {
         return(false);
     }
 }
示例#4
0
 private void Save(SaveScheduleInfo scheduleInfo)
 {
     logger.LogDebug($"Saving \"{scheduleInfo.settings.GetType().FullName}\" to \"{scheduleInfo.path}\"...");
     try
     {
         CreateBackup(scheduleInfo.path);
         scheduleInfo.settings.SaveToFile(scheduleInfo.path);
         if (scheduleInfo.settings is ModuleUserSettings)
         {
             (scheduleInfo.settings as ModuleUserSettings).OnSave();
         }
     }
     catch (Exception ex)
     {
         logger.LogError($"An error occured while trying to save \"{scheduleInfo.settings}\" to \"{scheduleInfo.path}\":\r\n{ex.ToString()}");
     }
 }
示例#5
0
        public async void Run(CancellationToken cancellationToken)
        {
            logger.LogInfo("Auto-saving service started.");
            while (!cancellationToken.IsCancellationRequested)
            {
                try
                {
                    await Task.Delay(SAVE_FREQUENCY, cancellationToken);
                }
                catch (TaskCanceledException) { }

                while (saveQueue.Count > 0 && !cancellationToken.IsCancellationRequested)
                {
                    SaveScheduleInfo scheduleInfo = saveQueue.Dequeue();
                    Save(scheduleInfo);
                }
            }
            logger.LogInfo("Auto-saving service stopped.");
        }