Example #1
0
        /// <summary>
        /// Add work in BackgroundWorker List
        /// </summary>
        /// <param name="autoBackupData"></param>
        private void AddWorker(AutoBackupData autoBackupData)
        {
            ///Build Workers///
            BackgroundWorker BW = new BackgroundWorker();

            BW.DoWork             += (obj, e) => { e.Result = FileOperation.SynchronizeFiles(autoBackupData.sourceFolder, autoBackupData.destFolder, Form1.programData.Options.CopySpeed); };
            BW.RunWorkerCompleted += (obj, e) => backgroundWorker1_RunWorkerCompleted(obj, e, autoBackupData);
            workerList.Add(BW);
            if (!workerList[0].IsBusy)
            {
                workerList[0].RunWorkerAsync();
            }
        }
Example #2
0
 /// <summary>
 /// Build BackgroundWorker to copy
 /// </summary>
 /// <param name="autoBackupData"></param>
 private void CopyIfReady(AutoBackupData autoBackupData)
 {
     try
     {
         if (autoBackupData.isDestinationDriveReady && autoBackupData.isSourceDriveReady &&
             ((autoBackupData.period == Method.Whenfilechanged) ? autoBackupData.isFileChanged : autoBackupData.isPeriodCompleted))
         {
             AddWorker(autoBackupData);
         }
         else
         {
             Tools.LogWriter("It's not ready to copy : " +
                             ((autoBackupData.period == Method.Whenfilechanged)
             ? "(s-d-chng) " + autoBackupData.isSourceDriveReady + autoBackupData.isDestinationDriveReady + autoBackupData.isFileChanged :
                              "(s-d-per) " + autoBackupData.isSourceDriveReady + autoBackupData.isDestinationDriveReady + autoBackupData.isPeriodCompleted));
         }
     }
     catch (Exception ex)
     {
         Tools.ErrorWriter(ex);
     }
 }
Example #3
0
        /// <summary>
        /// Event for completed background worker
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e">Uses for result</param>
        /// <param name="data">Work that is completed</param>
        private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e, AutoBackupData data)
        {
            try
            {
                if ((bool)e.Result == true)
                {
                    int index = autoBackupDatas.FindIndex(k => k == data);
                    Tools.LogWriter("------------------------------Worker completed. " + autoBackupDatas[index].sourceFolder + " remove from worker");
                    workerList.RemoveAt(0);
                    if (index > -1)
                    {
                        if (data.period == Method.Whenfilechanged)
                        {
                            Tools.LogWriter("Set values of isFileChanged to false", Tools.CreateFolderName(data.sourceFolder));
                            autoBackupDatas[index].isFileChanged = false;
                            watcher_.Start(data.sourceFolder);
                        }
                        else
                        {
                            Tools.LogWriter("Set values of isPeriodCompleted to false (" + DateTime.Now + ")");
                            autoBackupDatas[index].isPeriodCompleted = false;
                            autoBackupDatas[index].Timer.Start();
                        }
                    }
                }
                else
                {
                    Tools.LogWriter("Worker compleated but file senkronisation fail. worker move to end of list.", Tools.CreateFolderName(data.sourceFolder));
                    BackgroundWorker temp = workerList[0];
                    workerList.RemoveAt(0);
                    workerList.Add(temp);
                }

                if (workerList.Count > 0)
                {
                    workerList[0].RunWorkerAsync();
                }
            }
            catch (Exception ex)
            {
                Tools.ErrorWriter(ex);
            }
        }