public static PdfProgressItem StartTask(HttpContext context, int tenantId, Guid userId, int invoiceId) { lock (Queue.SynchRoot) { var task = GetTaskStatus(tenantId, invoiceId); if (task != null && task.IsCompleted) { Queue.Remove(task); task = null; } if (task == null) { task = new PdfProgressItem(context, tenantId, userId, invoiceId); Queue.Add(task); } if (!Queue.IsStarted) { Queue.Start(x => x.RunJob()); } return(task); } }
public PdfQueueWorker(DistributedTaskQueueOptionsManager queueOptions, PdfProgressItem pdfProgressItem, TenantManager tenantProvider, SecurityContext securityContext) { _queue = queueOptions.Get <PdfProgressItem>(); _pdfProgressItem = pdfProgressItem; _tenantId = tenantProvider.GetCurrentTenant().TenantId; _userId = securityContext.CurrentAccount.ID; }