Ejemplo n.º 1
0
        /// <summary>
        /// Xảy ra khi công việc hoàn thành
        /// </summary>
        /// <param name="Data">Dữ liệu đầu vào</param>
        private void CallBack(object Data, WorkExcuter.Work work)
        {
            DBDataContext db = new DBDataContext();

            if (!Directorys.IsFileExited())
            {
                db.BackUpDB(Directorys.GetBackupPath());
            }
            //Thay thế Work đã được thực thi bằng work mới nếu repeat true
            if (_Repeat)
            {
                for (int i = 0; i < 7; i++)
                {
                    if (Works[i] == work.WorkID)
                    {
                        DateTime NextTime = work.Time.AddDays(7);
                        Works[i] = WorkExcuter.WorksManager.GetNewWork(NextTime, new WorkExcuter.CallBackDlg(CallBack),
                                                                       new WorkExcuter.CallBackDlg(OnNotExcuted), NextTime, false).WorkID;
                    }
                }
            }
            else // Không repeat, chạy xong rồi thì nhờ class thông báo rằng mình đã xong việc
            {
                if (AScheduleDone != null)
                {
                    AScheduleDone(this, new EventArgs());
                }
            }
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Chạy khi có 1 Work không được chạy do quá thời gian
 /// </summary>
 /// <param name="sender">WorkID</param>
 /// <param name="e">EventArgs</param>
 private void OnNotExcuted(object sender, WorkExcuter.Work work)
 {
     // Nếu là lặp lại thì set work mới
     if (_Repeat)
     {
         for (int i = 0; i < 7; i++)
         {
             if (Works[i] == (int)sender)
             {
                 int      SoNgayDaQua = DateTime.Today.Day - work.Time.Day;
                 DateTime NextTime    = work.Time.AddDays(7 - SoNgayDaQua);
                 Works[i] = WorkExcuter.WorksManager.GetNewWork(NextTime, new WorkExcuter.CallBackDlg(CallBack),
                                                                new WorkExcuter.CallBackDlg(OnNotExcuted), NextTime, false).WorkID;
             }
         }
     }
     else // Không lặp lại thì thông báo là tác vụ backup đã hoàn thành
     {
         if (AScheduleDone != null)
         {
             AScheduleDone(this, new EventArgs());
         }
     }
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Hủy bỏ tác vụ này
 /// </summary>
 public void Terminate()
 {
     // Muốn hủy bỏ một tác vụ, đầu tiên ta phải dùng lớp để thông báo là nó đã xong việc
     if (AScheduleDone != null)
     {
         AScheduleDone(this, new EventArgs());
     }
     // sau khi thông báo rồi thì phải terminate tất cả các work bên trong Schedule này
     if (_Repeat)
     {
         foreach (var item in Works)
         {
             WorkExcuter.Work work = WorkExcuter.WorksManager.GetWorkByID(item);
             if (work != null)
             {
                 work.Terminate();
             }
         }
     }
     else
     {
         WorkExcuter.WorksManager.GetWorkByID(NoRepeatWork).Terminate();
     }
 }