public IProgressItem Start(List <int> fileID, List <int> contactID, String subject, String bodyTemplate, bool storeInHistory) { lock (_syncObj) { var operation = _mailQueue.GetTasks <SendBatchEmailsOperation>().FirstOrDefault(x => Convert.ToInt32(x.Id) == _tenantID); if (operation != null && operation.IsCompleted) { _mailQueue.RemoveTask(operation.Id); operation = null; } if (operation == null) { if (fileID == null) { fileID = new List <int>(); } if (contactID == null || contactID.Count == 0 || String.IsNullOrEmpty(subject) || String.IsNullOrEmpty(bodyTemplate)) { return(null); } if (contactID.Count > GetQuotas()) { contactID = contactID.Take(GetQuotas()).ToList(); } _sendBatchEmailsOperation.Configure(fileID, contactID, subject, bodyTemplate, storeInHistory); _mailQueue.QueueTask(_sendBatchEmailsOperation); } return(operation); } }