public void RunSingleTask(ScheduleItem s)
        {
            numberOfProcessesInQueue++;
            numberOfProcesses++;
            ScheduleHistoryItem obj = new ScheduleHistoryItem();

            obj.TypeFullName              = s.TypeFullName;
            obj.Id                        = s.Id;
            obj.TimeLapse                 = s.TimeLapse;
            obj.TimeLapseMeasurement      = s.TimeLapseMeasurement;
            obj.RetryTimeLapse            = s.RetryTimeLapse;
            obj.RetryTimeLapseMeasurement = s.RetryTimeLapseMeasurement;
            obj.ObjectDependencies        = s.ObjectDependencies;
            obj.CatchUpEnabled            = s.CatchUpEnabled;
            obj.Enabled                   = s.Enabled;
            obj.NextStart                 = s.NextStart;
            obj.ScheduleSource            = s.ScheduleSource;
            obj.SetSettings(s.GetSettings());
            obj.ThreadID     = s.ThreadID;
            obj.ProcessGroup = s.ProcessGroup;

            try
            {
                Run(obj);
                Thread.Sleep(1000);
            }
            catch (Exception exc)
            {
                //Exceptions.ProcessSchedulerException(exc);
                throw exc;
            }
        }
        // ''''''''''''''''''''''''''''''''''''''''''''''''''
        // Add a queue request to Threadpool with a
        // callback to RunPooledThread which calls Run()
        // ''''''''''''''''''''''''''''''''''''''''''''''''''
        public void AddQueueUserWorkItem(ScheduleItem s)
        {
            numberOfProcessesInQueue++;
            numberOfProcesses++;

            // Create the history item
            ScheduleHistoryItem objHist = new ScheduleHistoryItem();

            objHist.TypeFullName              = s.TypeFullName;
            objHist.Id                        = s.Id;
            objHist.TimeLapse                 = s.TimeLapse;
            objHist.TimeLapseMeasurement      = s.TimeLapseMeasurement;
            objHist.RetryTimeLapse            = s.RetryTimeLapse;
            objHist.RetryTimeLapseMeasurement = s.RetryTimeLapseMeasurement;
            objHist.ObjectDependencies        = s.ObjectDependencies;
            objHist.CatchUpEnabled            = s.CatchUpEnabled;
            objHist.Enabled                   = s.Enabled;
            objHist.NextStart                 = s.NextStart;
            objHist.ScheduleSource            = s.ScheduleSource;
            objHist.SetSettings(s.GetSettings());
            objHist.ThreadID     = s.ThreadID;
            objHist.ProcessGroup = s.ProcessGroup;

            try
            {
                // Use a standard thread to run the scheduled item iinstead of a pool thread
                // Store the history item
                this.historyItem = objHist;
                System.Threading.Thread threadItem = new System.Threading.Thread(new ThreadStart(this.RunStandardThread));
                threadItem.IsBackground = true;
                threadItem.Start();

                /*
                 * // Create a callback to subroutine RunPooledThread, this will be called
                 * // by our thread pool thread
                 * System.Threading.WaitCallback callback = new System.Threading.WaitCallback(RunPooledThread);
                 * //  And put in a request to ThreadPool to run the process.
                 * System.Threading.ThreadPool.QueueUserWorkItem(callback, (Object)objHist);
                 */

                // Suspend this threads quantum for a second
                Thread.Sleep(1000);
            }
            catch (Exception exc)
            {
                //Exceptions.ProcessSchedulerException(exc);
                throw exc;
            }
        }