static void ProccessMessagesAsync() { if (taskProccesSMSNotices == null || taskProccesSMSNotices.Status == TaskStatus.Running) { taskProccesSMSNotices = new Task(() => { cancellationTokenProccessSMSNotices = false; while (true) { if (!SMSNotices.IsEmpty) { foreach (Modem gsmModem in Modems.Where(s => s.IsFree).ToList()) { SMSNotice smsNotice; if (SMSNotices.TryDequeue(out smsNotice)) { gsmModem.SendMessage(smsNotice); } } Thread.Sleep(1000); } if (cancellationTokenProccessSMSNotices) { break; } } }); taskProccesSMSNotices.Start(); } }
static void Init() { //init config SendMessageConfig.Init(); var modems = AutoMapper.Mapper.Map <IEnumerable <ModemElement>, List <Modem> >(SendMessageConfig.Settings.Modems.Cast <ModemElement>()); var contacts = AutoMapper.Mapper.Map <IEnumerable <ContactElement>, List <Contact> >(SendMessageConfig.Settings.Contacts.Cast <ContactElement>()); foreach (Modem modem in modems) { //add event handler modem.OnEvent += OnEvent; Modems.Add(modem); } //add mailboxes foreach (Contact contact in contacts) { Contacts.Add(contact); } }