public void SyncFolderPair(SyncTask curTask, bool disablePrompt) { try { Logger.WriteSyncLog(_metaDataDir, curTask.Name, true); this.NotifyUIs("Analyzing " + curTask.Name + "..."); Detector detector = new Detector(_metaDataDir, curTask); detector.CompareFolders(); if (!detector.IsSynchronized()) { if (!CheckSufficientDiskSpace(curTask.Source.Substring(0, 1), detector.TgtDirtySize, disablePrompt) || !CheckSufficientDiskSpace(curTask.Target.Substring(0, 1), detector.SrcDirtySize, disablePrompt)) { throw new Exception("Insufficient disk space"); } Reconciler reconciler = new Reconciler(detector.SourceList, detector.TargetList, curTask, _metaDataDir); this.NotifyUIs("Synchronizing " + curTask.Name + "..."); if (curTask.TypeOfSync) { reconciler.Sync(); SyncMetaData.WriteMetaData(_metaDataDir + @"\" + curTask.Name + ".meta", reconciler.UpdatedList); } else { reconciler.BackupSource(detector.BackupFiles); SyncMetaData.WriteMetaData(_metaDataDir + @"\" + curTask.Name + ".bkp", detector.BackupFiles); } } this.UpdateSyncTaskResult(curTask, "Successful"); } catch (Exception e) { Logger.WriteErrorLog(e.Message); this.UpdateSyncTaskResult(curTask, "Unsuccessful"); } finally { Logger.WriteSyncLog(_metaDataDir, curTask.Name, false); } this.UpdateSyncTaskTime(curTask, DateTime.Now.ToString()); }