Exemplo n.º 1
0
        private static void ExecuteTask(object o)
        {
            Timetable.Entry e = o as Timetable.Entry;

            if (e == null)
            {
                return;
            }

            UpdateTimeTable(e, true);
            try
            {
                bool success = false;

                success = true;
                while (e.Task.ExecuteAsync().Status == TaskStatus.Running)
                {
                    Thread.Sleep(100);
                }

                if (!success && !string.IsNullOrEmpty(e.Task.Error))
                {
                    Config.LogWriter.LogMessage(LogLevel.Error, e.Task.Error);
                    e.Task.Revert();
                }
            }
            finally
            {
                UpdateTimeTable(e, false);
            }
        }
Exemplo n.º 2
0
        private async void Dispatch(Timetable.Entry e)
        {
            await Configuration.LogWriter.LogMessageAsync(LogLevel.Debug, string.Concat("Spawning execution of task with Id: ", e.Task.Id));

            if (e == null)
            {
                return;
            }

            UpdateTimeTable(e, true);

            try
            {
                bool success = false;

                success = await e.Task.ExecuteAsync();

                if (!success && !string.IsNullOrEmpty(e.Task.Error))
                {
                    await Configuration.LogWriter.LogMessageAsync(LogLevel.Error, e.Task.Error);

                    e.Task.Revert();
                }
            }
            finally
            {
                UpdateTimeTable(e, false);
            }
        }
Exemplo n.º 3
0
        private bool CheckIsOnTime(Timetable.Entry e)
        {
            bool isOnTime = (ulong)DateTime.Now.Ticks >= e.NextRun;

            Configuration.LogWriter.LogMessage(LogLevel.Debug, string.Format("Task {0} is {1}on time", e.Task.Id, isOnTime ? "NOT " : string.Empty));
            Configuration.LogWriter.LogMessage(LogLevel.Debug, string.Format("Task {0} is {1}running", e.Task.Id, !e.IsExecuting ? "NOT " : string.Empty));
            Configuration.LogWriter.LogMessage(LogLevel.Debug, string.Format("Task {0} will {1}run now", e.Task.Id, (!(e.IsExecuting && isOnTime)) ? "NOT " : string.Empty));


            return(!e.IsExecuting && (ulong)DateTime.Now.Ticks >= e.NextRun);
        }
Exemplo n.º 4
0
        private static void UpdateTimeTable(Timetable.Entry e, bool executing)
        {
            ulong currentTicks = 0;

            e.IsExecuting = executing;

            currentTicks = (ulong)DateTime.Now.Ticks;

            if (executing)
            {
                e.NextRun = currentTicks + e.Task.Interval;
            }
        }
        private bool ReadTasksList()
        {
            bool result = false;

            TasksLists = new Timetable();

            XmlNode tasks = GetDocumentNode("Tasks");

            if (tasks != null && tasks.HasChildNodes)
            {
                foreach (XmlNode taskXml in tasks.ChildNodes)
                {
                    Job t;

                    string          taskName = ParseTask(taskXml, out t);
                    Timetable.Entry entry    = new Timetable.Entry();
                    entry.Task = t;
                    TasksLists.Add(entry);
                }
            }

            return(result);
        }
Exemplo n.º 6
0
        private static void SpawnExecution(Timetable.Entry e)
        {
            Thread thrd = new Thread(ExecuteTask);

            thrd.Start(e);
        }
Exemplo n.º 7
0
 private void Dispatch(Timetable.Entry e)
 {
     Configuration.LogWriter.LogMessage(LogLevel.Debug, string.Concat("Spawning execution of task with Id: ", e.Task.Id));
     SpawnExecution(e);
 }