public void Start() { lock (JobLock) { if (IsRunning) { return; } IsRunning = true; m_cancelSource = new CancellationTokenSource(); WorkManager.RunInThreadPool(ProcessRequests, null, Name, false); m_threadRunnig = true; } }
/// <summary> /// Queue the job for processing. /// </summary> /// <returns><c>true</c>, if job was queued, <c>false</c> otherwise.</returns> /// <param name="job">The job</param> /// </param> public bool QueueJob(Job job) { lock (JobLock) { if (!IsRunning) { return(false); } if (!m_threadRunnig) { WorkManager.RunInThreadPool(ProcessRequests, null, Name, false); m_threadRunnig = true; } } if (m_jobQueue.Count < m_jobQueue.BoundedCapacity) { m_jobQueue.Add(job); if (!m_warnOverMaxQueue) { m_warnOverMaxQueue = true; } return(true); } else { if (m_warnOverMaxQueue) { m_log.WarnFormat( "[{0}]: Job queue at maximum capacity, not recording job from {1} in {2}", LoggingName, job.Name, Name); m_warnOverMaxQueue = false; } return(false); } }