public void AddJob(CloudPrintJob job) { ThrowIfDisposed(); lock (PrintJobQueue) { PrintJobQueue.Enqueue(job); } ProcessQueuedPrintJobs(); }
public void AddJobs(IEnumerable <CloudPrintJob> jobs) { ThrowIfDisposed(); lock (PrintJobQueue) { foreach (var job in jobs) { PrintJobQueue.Enqueue(job); } } ProcessQueuedPrintJobs(); }
public IEnumerable <CloudPrintJob> GetQueuedJobs() { foreach (KeyValuePair <string, ConcurrentQueue <CloudPrintJob> > kvp in UserDeferredJobs.AsEnumerable()) { foreach (CloudPrintJob job in kvp.Value.AsEnumerable()) { yield return(job); } } foreach (CloudPrintJob job in PrintJobQueue.AsEnumerable()) { yield return(job); } }
public IEnumerable <CloudPrintJob> GetQueuedJobs(string username) { ConcurrentQueue <CloudPrintJob> queue; if (UserDeferredJobs.TryGetValue(username, out queue)) { foreach (CloudPrintJob job in queue.AsEnumerable()) { yield return(job); } } foreach (CloudPrintJob job in PrintJobQueue.AsEnumerable().Where(j => j.Username == username)) { yield return(job); } }
private void DoProcessQueuedPrintJobs(CancellationToken cancelToken) { Logger.Log(LogLevel.Debug, "Processing queued jobs"); do { try { CloudPrintJob job; while (!cancelToken.IsCancellationRequested && PrintJobQueue.TryDequeue(out job)) { if (job.Status == CloudPrintJobStatus.QUEUED) { ProcessPrintJob(job); } } } catch (Exception ex) { Logger.Log(LogLevel.Warning, "ProcessQueuedPrintJobs task caught exception {0}\n{1}", ex.Message, ex.ToString()); } }while (!cancelToken.IsCancellationRequested && Interlocked.Decrement(ref QueuedPrintJobs) != 0); Logger.Log(LogLevel.Debug, "Done"); }