/// <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); } } } }