static void AlarmChecker(Ram_Info ws1)
        {
            try
            {

                if (AlarmCount > ws1.AlarmValue && AlarmStatus == 0)
                {

                    try
                    {
                        AlarmFormatter(ws1);
                    }
                    catch (Exception ex)
                    {

                        LogUtil.WriteLog(LogLevel.ERROR, ex.Message + " " + ex.StackTrace + Environment.NewLine + "**** " + "Date:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                    }

                    if (ws1.isFtpUploadEnable)
                    {
                        FTPHandler ftpUploader = new FTPHandler();
                        ftpUploader.Upload(ws1.AlarmFilePath, ws1.FtpFileName);
                    }

                    if (ws1.isMailSendEnable)
                    {
                        string[] mailingList1 = ws1.ReceiverList.Split('#');
                        foreach (string mailAdress in mailingList1)
                        {
                            Mailer cs = new Mailer();
                            cs.EmailSubject = String.Format(ws1.ClubName + "/" + ws1.Name, ws1.ClubName);
                            cs.EmailBody = "Server-IP: " + ws1.ServerIpAddress + "\n" + "Project Name:  " + ws1.ClubName + "\n" + ws1.MessageStopped + "%" + ws1.AlarmPercentage + "\n" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                            cs.IsHtmlMail = false;
                            cs.EmailTo = mailAdress;
                            cs.SmtpServerPort = SMTP_PORT;
                            cs.SenderEmailAddress = SMTP_USER;
                            cs.SenderEmailPassword = SMTP_PASS;
                            cs.EnableSsl = true;
                            cs.SmtpServerName = SMTP_HOST;
                            Mailer.SendSingleEmail(cs);
                            cs = null;

                        }

                    }

                    if (ws1.isSmsSendEnable)
                    {

                        try
                        {

                            string[] arrSmsList = ws1.SmsList.Split('#');
                            foreach (string Msisdn in arrSmsList)
                            {
                                DataAccessLayer _objDataAccessLayer = new DataAccessLayer();
                                _objDataAccessLayer.SendMessage(ws1.ServiceCode, Msisdn, String.Format("{0} - {1}", ws1.ClubName, ws1.MessageStopped + "\n" + "Server-IP: " + ws1.ServerIpAddress + "\n" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")));
                            }
                        }
                        catch (Exception exSms)
                        {
                            LogUtil.WriteLog(LogLevel.ERROR, exSms.Message + " " + exSms.StackTrace + Environment.NewLine + "**** " + "Date:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                        }
                    }
                    AlarmStatus = 1;

                }

                else if (AlarmCount == 0 && AlarmStatus == 1)
                {

                    AlarmStatus = 0;
                    AlarmCount = 0;

                    try
                    {
                        AlarmFormatter(ws1);
                    }
                    catch (Exception ex)
                    {

                        LogUtil.WriteLog(LogLevel.ERROR, ex.Message + " " + ex.StackTrace + Environment.NewLine + "**** " + "Date:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                    }

                    if (ws1.isFtpUploadEnable)
                    {
                        FTPHandler ftpUploader = new FTPHandler();
                        ftpUploader.Upload(ws1.AlarmFilePath, ws1.FtpFileName);
                    }

                    if (ws1.isSmsSendEnable)
                    {

                        try
                        {

                            string[] arrSmsList = ws1.SmsList.Split('#');
                            foreach (string Msisdn in arrSmsList)
                            {
                                DataAccessLayer _objDataAccessLayer = new DataAccessLayer();
                                _objDataAccessLayer.SendMessage(ws1.ServiceCode, Msisdn, String.Format("{0} - {1}", ws1.ClubName, ws1.MessageStarted + "\n" + "Server-IP: " + ws1.ServerIpAddress + "\n" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")));
                            }
                        }
                        catch (Exception exSms)
                        {
                            LogUtil.WriteLog(LogLevel.ERROR, exSms.Message + " " + exSms.StackTrace + Environment.NewLine + "**** " + "Date:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                        }
                    }

                    if (ws1.isMailSendEnable)
                    {
                        string[] mailingList = ws1.ReceiverList.Split('#');
                        foreach (string mailAdress in mailingList)
                        {
                            Mailer cs = new Mailer();
                            cs.EmailSubject = String.Format(ws1.ClubName + "/" + ws1.Name, ws1.ClubName);
                            cs.EmailBody = "Server-IP: " + ws1.ServerIpAddress + "\n" + "Project Name:  " + ws1.ClubName + "\n" + ws1.MessageStarted + "%" + ws1.AlarmPercentage + "\n" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                            cs.IsHtmlMail = false;
                            cs.EmailTo = mailAdress;
                            cs.SmtpServerPort = SMTP_PORT;
                            cs.SenderEmailAddress = SMTP_USER;
                            cs.SenderEmailPassword = SMTP_PASS;
                            cs.EnableSsl = true;
                            cs.SmtpServerName = SMTP_HOST;
                            Mailer.SendSingleEmail(cs);
                            cs = null;
                        }

                    }
                }
                else
                {
                    Console.WriteLine("Normal");
                }
            }

            catch (Exception ex)
            {

                LogUtil.WriteLog(LogLevel.ERROR, ex.Message + " " + ex.StackTrace + Environment.NewLine + "**** " + "Date:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
            }
        }
        protected override void OnStart(string[] args)
        {
            try
            {

                #region serviceVariables

                string ServiceStarterMessage = ConfigurationManager.AppSettings.Get("ServiceStarterMessage");
                string ClubName = ConfigurationManager.AppSettings.Get("ClubName");
                string AppName = ConfigurationManager.AppSettings.Get("ApplicationName");
                int StartSleepTime = Convert.ToInt32(ConfigurationManager.AppSettings.Get("StartSleepTime"));
                string ServiceStarterMailinglist = ConfigurationManager.AppSettings.Get("ServiceStarterMailinglist");
                string ServerIP = ConfigurationManager.AppSettings.Get("ServerIP");

                string SMTP_HOST = ConfigurationManager.AppSettings.Get("SMTP_HOST");
                string SMTP_PORT = ConfigurationManager.AppSettings.Get("SMTP_PORT");
                string SMTP_USER = ConfigurationManager.AppSettings.Get("SMTP_USER");
                string SMTP_PASS = ConfigurationManager.AppSettings.Get("SMTP_PASS");
                bool isSSLEnabled = Convert.ToBoolean(ConfigurationManager.AppSettings.Get("SMTP_SSL_ENABLE"));

                #endregion
                try
                {
                    #region SendMailFirstToAuthorized
                    string[] mailingList = ServiceStarterMailinglist.Split('#');
                    foreach (string Receievers in mailingList)
                    {

                        Mailer cs = new Mailer();
                        cs.EmailSubject = ClubName + "/" + AppName + " windows service has started:  " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ClubName;
                        cs.EmailBody = "Server IP:" + ServerIP + Environment.NewLine + "Project Name:" + ClubName + Environment.NewLine + ServiceStarterMessage + Environment.NewLine + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                        cs.IsHtmlMail = false;
                        cs.EmailTo = Receievers;
                        cs.SmtpServerPort = SMTP_PORT;
                        cs.SenderEmailAddress = SMTP_USER;
                        cs.SenderEmailPassword = SMTP_PASS;
                        cs.EnableSsl = true;
                        cs.SmtpServerName = SMTP_HOST;
                        Mailer.SendSingleEmail(cs);
                        cs = null;
                    }
                    #endregion

                    LogUtil.WriteLog(LogLevel.INFO, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " " + AppName + " has started, sleeping for " + StartSleepTime.ToString() + " miliseconds before starting threads");
                    Thread.Sleep(StartSleepTime);
                    LogUtil.WriteLog(LogLevel.INFO, "Sleep ended, starting to process threads");

                    Thread alarmChecker = new Thread(new ThreadStart((new AlarmMonitor()).Start));
                    alarmChecker.Name = "Alarm Monitor";
                    alarmChecker.Start();

                }
                catch (Exception ex)
                {
                    LogUtil.WriteLog(LogLevel.ERROR, String.Format("MESSAGE: {0} *** STACK TRACE: {1}", ex.Message, ex.StackTrace));
                }

            }
            catch (Exception ex)
            {

                LogUtil.WriteLog(LogLevel.ERROR, String.Format("MESSAGE: {0} *** STACK TRACE: {1}", ex.Message, ex.StackTrace));
            }
        }