/// <summary> /// Function used in the thread scheduled. /// </summary> private void FctThreadProcesserScheduled() { IsRunningScheduled = true; while (IsRunningScheduled == true) { try { Global.Log.WriteEvent(LogType.debug, string.Format("[PROCESSER:SCH] Scanning scheduled queue...")); // check if the queue is empty if (QueueScheduled.IsEmpty() == false) { // give all the elements in the queue and dispach it ArrayList queuedObject = QueueScheduled.GiveSpooledObject(StateSpooledObject.queued); foreach (SpooledObject Object in queuedObject) { TimeSpan ts = Object.SendingDate - DateTime.Now; if (Object.SendingDate <= DateTime.Now) { QueueScheduled.ModifyState(Object.Name, StateSpooledObject.dispacher); _dispacher.AddToDispacher(Object); } } } Global.Log.WriteEvent(LogType.debug, string.Format("[PROCESSER:SCH] Next scan in {0} seconds", (float)_tempoThread / 1000)); Thread.Sleep(_tempoThread); } catch (ThreadAbortException) { } catch (Exception ex) { Global.Log.WriteError("[PROCESSER:SCH] " + ex.Message); Global.Log.WriteError("[PROCESSER:SCH] " + ex.StackTrace); } } }
/// <summary> /// Delete a scheduled mail. /// </summary> /// <param name="Elem">The mail to delete</param> /// <returns>True if deleted successfully, otherwise, False</returns> public static bool DeleteScheduledMail(string Elem) { SpooledObject objToDel = QueueScheduled.GiveSpooledObject(Elem); bool flagIsDeleted = false; switch (objToDel.State) { case StateSpooledObject.queued: { QueueScheduled.Remove(Elem); File.Delete(Elem); ActiveQLibrary.Form.ManageForm.RemoveElemScheduledQueue(Elem); flagIsDeleted = true; } break; case StateSpooledObject.dispacher: { if (_processer.Dispacher.Delete(Elem) == true) { QueueScheduled.Remove(Elem); File.Delete(Elem); ActiveQLibrary.Form.ManageForm.RemoveElemScheduledQueue(Elem); flagIsDeleted = true; } else { flagIsDeleted = false; } } break; case StateSpooledObject.sent: { flagIsDeleted = false; } break; } return(flagIsDeleted); }
/// <summary> /// Delete a scheduled task. /// </summary> /// <param name="File">File name</param> /// <param name="Id">id</param> /// <returns>True if deleted successfully, otherwise, False</returns> public static bool DeleteScheduledTask(string File, string Id) { string ElemToDel = string.Format("{0}?{1}", File, Id); SpooledObject objToDel = QueueScheduled.GiveSpooledObject(ElemToDel); bool flagIsDeleted = false; switch (objToDel.State) { case StateSpooledObject.queued: { QueueScheduled.Remove(ElemToDel); DeleteTaskInFile(File, Id); flagIsDeleted = true; } break; case StateSpooledObject.dispacher: { if (_processer.Dispacher.Delete(ElemToDel) == true) { QueueScheduled.Remove(ElemToDel); DeleteTaskInFile(File, Id); flagIsDeleted = true; } else { flagIsDeleted = false; } } break; case StateSpooledObject.sent: { flagIsDeleted = false; } break; } return(flagIsDeleted); }