예제 #1
0
        /// <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);
                }
            }
        }
예제 #2
0
        /// <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);
        }
예제 #3
0
        /// <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);
        }