private void SendMessages(object messages) { try { foreach (var m in (IDictionary <int, NotifyMessage>)messages) { if (!work) { return; } var result = MailSendingState.Sended; try { NotifyServiceCfg.Senders[m.Value.Sender].Send(m.Value); log.DebugFormat("Notify #{0} has been sent.", m.Key); } catch (Exception e) { result = MailSendingState.FatalError; log.Error(e); } db.SetState(m.Key, result); } } catch (ThreadAbortException) { return; } catch (Exception e) { log.Error(e); } finally { Interlocked.Decrement(ref threadsCount); try { waiter.Set(); } catch (ObjectDisposedException) { } log.DebugFormat("{0} stopped.", Thread.CurrentThread.Name); } }
private void SendMessages(object messages) { try { foreach (var m in (IDictionary <int, NotifyMessage>)messages) { if (cancellationToken.IsCancellationRequested) { return; } var result = MailSendingState.Sended; try { var sender = NotifyServiceCfg.Senders.FirstOrDefault(r => r.Name == m.Value.Sender); if (sender != null) { sender.NotifySender.Send(m.Value); } else { result = MailSendingState.FatalError; } log.DebugFormat("Notify #{0} has been sent.", m.Key); } catch (Exception e) { result = MailSendingState.FatalError; log.Error(e); } db.SetState(m.Key, result); } } catch (ThreadAbortException) { return; } catch (Exception e) { log.Error(e); } }