private Task ProcessInProcess() { return(Task.Factory.StartNew(state => { if (!((InternalStop)state).Value) { EmailMessage message = null; while (InProcessQueue.Dequeue(out message) && !((InternalStop)state).Value) { try { RealTimeQueue.Enqueue(message); MailClient.Send(message); SuccessQueue.Enqueue(message); Thread.Sleep((int)(1000 * MailSettings.SmtpInterval)); } catch (Exception) { FailureQueue.Enqueue(message); throw; } finally { RealTimeQueue.Dequeue(out message); } } } }, Stopped, TaskCreationOptions.AttachedToParent | TaskCreationOptions.LongRunning)); }
public IQueue Create(string name) { InProcessQueue queue; lock (_lock) { if (_queues.ContainsKey(name)) { queue = _queues[name]; } else { queue = new InProcessQueue(name); _queues.Add(name, queue); } } return queue; }
private Task ProcessBacklog() { return(Task.Factory.StartNew(state => { if (!((InternalStop)state).Value) { EmailMessage message = null; while (BacklogQueue.Dequeue(out message) && !((InternalStop)state).Value) { try { InProcessQueue.Enqueue(message); } catch (Exception) { FailureQueue.Enqueue(message); throw; } } } }, Stopped, TaskCreationOptions.AttachedToParent)); }
public Task Scan() { Stopped.Value = false; return(Task.Factory.StartNew(state => { if (!((InternalStop)state).Value) { BacklogQueue.Scan(); InProcessQueue.Scan(); // for directly insert data to db if (_firstRun) { _firstRun = false; RealTimeQueue.Scan(); EmailMessage message; while (!((InternalStop)state).Value && RealTimeQueue.Dequeue(out message)) { InProcessQueue.Enqueue(message); } } } }, Stopped, TaskCreationOptions.AttachedToParent)); }