/// <summary> /// Enqueue a WorkQueue entry for processing. /// </summary> /// <param name="processor"></param> /// <param name="item"></param> /// <param name="del"></param> public void Enqueue(IWorkQueueItemProcessor processor, Model.WorkQueue item, WorkQueueThreadDelegate del) { WorkQueueThreadParameter parameter = new WorkQueueThreadParameter(processor, item, del); lock (_syncLock) { if (item.WorkQueuePriorityEnum.Equals(WorkQueuePriorityEnum.High)) { _highPriorityCount++; } if (item.WorkQueuePriorityEnum.Equals(WorkQueuePriorityEnum.Stat)) { _highPriorityCount++; } WorkQueueTypeProperties prop = _workQueuePropList[item.WorkQueueTypeEnum]; if (prop.MemoryLimited) { _memoryLimitedCount++; } _totalThreadCount++; _queuedItems.Add(parameter); } Enqueue(parameter, delegate(WorkQueueThreadParameter threadParameter) { threadParameter.Delegate(threadParameter.Processor, threadParameter.Item); QueueItemComplete(threadParameter.Item); }); }
public WorkQueueThreadParameter(IWorkQueueItemProcessor processor, Model.WorkQueue item, WorkQueueThreadDelegate del) { _item = item; _processor = processor; _del = del; }