Таймер в службе Windows C # не перезапускается

У меня есть служба Windows, которая запускает четыре таймера для приложения мониторинга. Рассматриваемый таймер открывает веб-запрос, опрашивает остальную веб-службу и сохраняет результаты в базе данных.

См. прошедший метод ниже:

        void iSMSPollTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
    {
        iSMSPollTimer.Stop();
        try
        {
            Logger.Log("iSMSPollTimer elapsed - polling iSMS modem for new messages");
            string url = "http://...:../recvmsg?user=" + iSMSUser + "&passwd=" + iSMSPassword;
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream resStream = response.GetResponseStream();

            XmlSerializer serializer = new XmlSerializer(typeof(Response));
            using (XmlReader reader = XmlReader.Create(resStream))
            {
                Response responseXml = (Response)serializer.Deserialize(reader);
                if (responseXml.MessageNotification != null)
                {
                    foreach (var messageWrapper in responseXml.MessageNotification)
                    {
                        DataContext dc = new DataContext();
                        DateTime monitorTimestamp = DateTime.Now;

                        if (messageWrapper.Message.ToUpper().EndsWith("..."))
                        {
                            //Saved to DB
                        }
                        else if (messageWrapper.Message.ToUpper().EndsWith("..."))
                        {
                            //Saved to DB
                        }
                        dc.SubmitChanges();
                    }
                }
                else
                {
                    Logger.Log("No messages waiting in the iSMS Modem");
                }
            }
            Logger.Log("iSMSPollTimer processing completed");
        }
        catch (Exception ex)
        {
            Logger.Log(GetExceptionLogMessage("iSMSPollTimer_Elapsed", ex));
            Logger.Debug(GetExceptionLogMessage("iSMSPollTimer_Elapsed", ex));
        }
        finally
        {
            iSMSPollTimer.Start();
        }
    }

Когда я смотрю сообщения журнала, я получаю сообщение «Обработка iSMSPollTimer завершена», и впоследствии таймер случайным образом не срабатывает. перезапустите.

Есть мысли?

1
задан Adam 8 October 2010 в 15:56
поделиться