private void ModemHandleElapsed(object sender, ElapsedEventArgs e, GsmModem modem) { int sync = Interlocked.CompareExchange(ref modem.processing, 1, 0); if (sync == 0) { SetChekedMessages(modem); ShortMessageCollection messages = modem.ReadSMS(); if (messages != null && messages.Count > 0) messages.Concat(notProcessingSMS[modem.ServicePhone.PhoneNumber]); else messages = notProcessingSMS[modem.ServicePhone.PhoneNumber]; if (messages != null) { if (messages.Count > 0) { messages = ProcessingNewIncomeSMSMessages(messages, modem); foreach (ShortMessage message in messages) message.IsRead = false; notProcessingSMS[modem.ServicePhone.PhoneNumber] = messages; } ProcessingCheckedMessages(modem); ProcessingNewIncomeClientWebMessages(modem); ProcessingNotSentIncomeClientEmail(modem); messages.Clear(); modem.processing = 0; } } }