Esempio n. 1
0
        private void FlushExpiredJobs(object state)
        {
            DateTimeOffset cutoff = DateTimeOffset.Now - _jobFlushExpiration;

            LogDebug($"Ending monitoring for all print jobs not updated since {cutoff}.");

            List <long> ids = _printJobDataBuilders.Where(n => n.Value.LastUpdate < cutoff).Select(n => n.Key).ToList();

            foreach (long id in ids)
            {
                if (_printJobDataBuilders.TryGetValue(id, out PrintJobDataBuilder printJobDataBuilder))
                {
                    var printJobData = printJobDataBuilder.BuildPrintJobDataEventArgs();
                    LogDebug($"Print job {printJobData.Job.Id} is no longer being monitored.");
                    ThreadPool.QueueUserWorkItem(_ => PrintJobMonitoringFinished?.Invoke(this, printJobData));
                }
                _printJobDataBuilders.Remove(id);
            }

            LogDebug($"{ids.Count} print jobs removed.");
        }
Esempio n. 2
0
 private void PrintJobDataBuilder_PrintJobComplete(object sender, PrintJobDataEventArgs e)
 {
     LogDebug($"Print job {e.Job.Id} is finished.");
     ThreadPool.QueueUserWorkItem(_ => PrintJobMonitoringFinished?.Invoke(this, e));
     _printJobDataBuilders.Remove(e.Job.Id);
 }