/// <summary>
 /// Enqueues the specified operation.
 /// </summary>
 /// <param name="operation">The operation.</param>
 /// <param name="queue">The queue.</param>
 private void Enqueue(IThreadPoolOperation operation, Queue<IThreadPoolOperation> queue)
 {
     lock (queue)
         queue.Enqueue(operation);
     if (!this.ShouldSpinUpNewThread)
         return;
     Interlocked.Increment(ref _threads);
     this.SpinUpNewThreadForProcessingQueue();
 }
 /// <summary>
 /// Enqueues the specified operation.
 /// </summary>
 /// <param name="operation">The operation.</param>
 public void Enqueue(IThreadPoolOperation operation)
 {
     this.Enqueue(operation, this._eventQueue);
 }