コード例 #1
0
        /// <summary>
        /// Check for campaigns and start them
        /// </summary>
        private void InitiateCampaign()
        {
            CancellationToken cancellation = cts.Token;
            TimeSpan          interval     = TimeSpan.Zero;
            CampaignManager   camp         = new CampaignManager();

            while (!cancellation.WaitHandle.WaitOne(interval))
            {
                try
                {
                    if (camp.CheckCampaignAvailability())
                    {
                        camp.StartCampaign();
                        using (FileStream fs = new FileStream(AppDomain.CurrentDomain.BaseDirectory + "LogsForService.txt", FileMode.Append, FileAccess.Write))
                            using (StreamWriter sw = new StreamWriter(fs))
                            {
                                sw.WriteLine("Success Campaign Successfuly Send  : " + DateTime.Now);
                            }
                        interval = WaitAfterSuccessInterval;
                    }
                    else
                    {
                        interval = WaitForCampaign;
                    }

                    if (cancellation.IsCancellationRequested)
                    {
                        Trace.Write("Service Cancelled     : " + DateTime.Now);
                        OnStop();
                    }
                }
                catch (Exception caught)
                {
                    // Log the exception.
                    EMTException ex = new EMTException((int)EMTException.ErorrTypes.SqlExceptions, caught.Message, caught.StackTrace, EMTException.ErorrTypes.SMTPExceptions.ToString());
                    ex.LogException();
                    interval = WaitAfterErrorInterval;
                    Trace.Write("Service Failure  : " + DateTime.Now);
                    Trace.Write("Failure Reason   : " + caught.InnerException.Message);
                    using (FileStream fs = new FileStream(AppDomain.CurrentDomain.BaseDirectory + "LogsForService.txt", FileMode.Append, FileAccess.Write))
                        using (StreamWriter sw = new StreamWriter(fs))
                        {
                            sw.WriteLine("Service Failure  : " + DateTime.Now);
                            sw.WriteLine("Failure Reason   : " + caught.Message);
                        }
                }
            }
        }