protected override void OnItemProcessed(QueuerItemEventArgs <T> e, QueuerState <T> state)
 {
     if (!e.Stop)
     {
         this.Item_MarkCompleted(state);
     }
     base.OnItemProcessed(e, state);
 }
 protected override void OnItemProcessing(QueuerItemEventArgs <T> e, QueuerState <T> state)
 {
     base.OnItemProcessing(e, state);
     if (!e.Stop)
     {
         this.ItemsInQueue.Add(state.CurrentItem = e.Item);
     }
 }
 protected override void Queuer_ItemProcessing(object sender, QueuerItemEventArgs <int> e)
 {
     this.AssignNextItem(e);
     if (!e.Stop)
     {
         base.Queuer_ItemProcessing(sender, e);
     }
 }
Beispiel #4
0
        protected virtual void OnItemError(QueuerItemEventArgs <T> e)
        {
            EventHandler <QueuerItemEventArgs <T> > handler = this.ItemError;

            if (handler != null)
            {
                handler(this, e);
            }
        }
Beispiel #5
0
        protected virtual void OnItemProcessing(QueuerItemEventArgs <T> e, QueuerState <T> state)
        {
            EventHandler <QueuerItemEventArgs <T> > handler = this.ItemProcessing;

            if (handler != null)
            {
                handler(this, e);
            }
        }
Beispiel #6
0
 protected virtual void OnItemProcessed(QueuerItemEventArgs <T> e, QueuerState <T> state)
 {
     if (e.Stop)
     {
         this.Item_ProcessStopped(state);
     }
     else if (e.Exception == null)
     {
         EventHandler <QueuerItemEventArgs <T> > handler = this.ItemProcessed;
         if (handler != null)
         {
             handler(this, e);
         }
     }
 }
 private void AssignNextItem(QueuerItemEventArgs <int> e)
 {
     lock (this._lock)
     {
         if (this._processed.Count == this._items.Length)
         {
             e.Stop = true;
         }
         else
         {
             int result = this._items.Where(x => !this._processed.Contains(x)).First();
             this._processed.Add(e.Item = result);
         }
     }
 }
Beispiel #8
0
        protected virtual void Process_ExecuteSpecific(QueuerState <T> state)
        {
            var e = new QueuerItemEventArgs <T>(state.CurrentItem, Thread.CurrentThread.Name);

            // Before item process
            this.OnItemProcessing(e, state);

            // Item process
            if (!e.Stop)
            {
                this.Process_ExecuteHandler(state, e);
            }

            // After item process
            this.OnItemProcessed(new QueuerItemEventArgs <T>(e), state);

            // Next item
            if (!e.Stop)
            {
                this.Process_ExecuteNext(state);
            }
        }
Beispiel #9
0
 protected virtual void Process_ExecuteHandler(QueuerState <T> state, QueuerItemEventArgs <T> e)
 {
     try
     {
         using (var monitor = new QueuerMonitor(this.ProcessItemTimeout, string.Format("Process task {0}.", e.Item), e))
         {
             monitor.TimeExceeded += new EventHandler <QueuerMonitorEventArgs>(Monitor_TimeExceeded);
             state.Handler.Invoke(state.CurrentItem);
         }
     }
     catch (Exception ex)
     {
         e.Exception = e.Exception.Append(ex);
     }
     finally
     {
         if (e.Exception != null)
         {
             this.OnItemError(new QueuerItemEventArgs <T>(e));
         }
     }
 }
Beispiel #10
0
        private void Monitor_TimeExceeded(object sender, QueuerMonitorEventArgs e)
        {
            QueuerItemEventArgs <T> args = (QueuerItemEventArgs <T>)(e.State);

            args.Exception = e.Exception;
        }