internal void TaskFinished(PoolItem poolItem) { lock (this) { this.activeTasks--; } }
/// <summary> /// Process the specified task. It will be processed either now, /// or queued to process on the thread pool. /// </summary> /// <param name="task">The task to process.</param> /// <param name="group">The group this task belongs to.</param> public void ProcessTask(IEngineTask task, TaskGroup group) { lock (this) { this.activeTasks++; } if( group!=null ) group.TaskStarting(); PoolItem item = new PoolItem(this, task, group); ThreadPool.QueueUserWorkItem(item.ThreadPoolCallback); }