Note that there are some explanatory texts on larger screens.

plurals
  1. POWindows service shuts off after running first record
    primarykey
    data
    text
    <p>I have a windows service that is supposed to check for a record, email a report for that record, delete the record and then repeat for the table. It checks for the record, emails a report for the first record then shuts off. Any ideas??</p> <p>Service code:</p> <pre><code>namespace ReportSender { public partial class EmailReportService : ServiceBase { private EmailReportApp _app = new EmailReportApp(); public Timer serviceTimer = new Timer(); public EmailReportService() { InitializeComponent(); } protected override void OnStart(string[] args) { //Set interval (from App Settings) and enable timer serviceTimer.Elapsed += new ElapsedEventHandler(ServiceTimer_OnElapsed); //Use Conversion utility to determine next start date/time based on properties, use DateTime.Subtract() to find milliseconds difference between Now and the next start time //serviceTimer.Interval = Date.AddInterval(Properties.Settings.Default.IntervalType, Properties.Settings.Default.Interval).Subtract(DateTime.Now).TotalMilliseconds; serviceTimer.Interval = 600000; serviceTimer.Enabled = true; } protected override void OnStop() { //Stop and disable timer serviceTimer.Enabled = false; } private void ServiceTimer_OnElapsed(object source, ElapsedEventArgs e) { try { //Stop the timer to prevent overlapping runs serviceTimer.Stop(); //Start service //Run your app.Start() code _app = new EmailReportApp(); _app.Start(); } catch (Exception ex) { } finally { //Re-start the timer serviceTimer.Start(); } } } } </code></pre> <p>Code the service is supposed to execute:</p> <pre><code>namespace ReportSender { class EmailReportApp { // Private fields private Thread _thread; private EventLog _log; private void Execute() { try { // Check for a new record DataClasses1DataContext dc = new DataClasses1DataContext(); foreach (var item in dc.reportsSent1s) { string matchedCaseNumber = item.CaseNumberKey; (new MyReportRenderer()).RenderTest(matchedCaseNumber); dc.reportsSent1s.DeleteOnSubmit(item); dc.SubmitChanges(); } } catch (ThreadAbortException ex) { _log.WriteEntry(ex.StackTrace.ToString()); } } public void Start() { if (!EventLog.SourceExists("EventLoggerSource")) EventLog.CreateEventSource("EventLoggerSource", "Event Logger"); _log = new EventLog("EventLoggerSource"); _log.Source = "EventLoggerSource"; _thread = new Thread(new ThreadStart(Execute)); _thread.Start(); } public void Stop() { if (_thread != null) { _thread.Abort(); _thread.Join(); } } } public class MyReportRenderer { private rs2005.ReportingService2005 rs; private rs2005Execution.ReportExecutionService rsExec; public void RenderTest(String matchedCaseNumber) { string HistoryID = null; string deviceInfo = null; string encoding = String.Empty; string mimeType = String.Empty; string extension = String.Empty; rs2005Execution.Warning[] warnings = null; string[] streamIDs = null; rs = new rs2005.ReportingService2005(); rsExec = new rs2005Execution.ReportExecutionService(); rs.Credentials = System.Net.CredentialCache.DefaultCredentials; rsExec.Credentials = System.Net.CredentialCache.DefaultCredentials; rs.Url = "http://***.**.***.**/ReportServer_DEVELOPMENT/ReportService2005.asmx"; rsExec.Url = "http://***.**.***.**/ReportServer_DEVELOPMENT/ReportExecution2005.asmx"; try { // Load the selected report. rsExec.LoadReport("/LawDept/LawDeptTIC", HistoryID); // Set the parameters for the report needed. rs2005Execution.ParameterValue[] parameters = new rs2005Execution.ParameterValue[1]; parameters[0] = new rs2005Execution.ParameterValue(); parameters[0].Name = "CaseNumberKey"; parameters[0].Value = matchedCaseNumber; rsExec.SetExecutionParameters(parameters, "en-us"); // get pdf of report Byte[] results = rsExec.Render("PDF", deviceInfo, out extension, out encoding, out mimeType, out warnings, out streamIDs); //pass paramaters for email DataClasses1DataContext db = new DataClasses1DataContext(); var matchedBRT = (from c in db.GetTable&lt;vw_ProductClientInfo&gt;() where c.CaseNumberKey == matchedCaseNumber select c.BRTNumber).SingleOrDefault(); var matchedAdd = (from c in db.GetTable&lt;vw_ProductClientInfo&gt;() where c.CaseNumberKey == matchedCaseNumber select c.Premises).SingleOrDefault(); //send email with attachment MailMessage message = new MailMessage("234@acmetaxabstracts.com", "georr@gmail.com", "Report for BRT # " + matchedAdd, "Attached if the Tax Information Certificate for the aboved captioned BRT Number"); MailAddress copy = new MailAddress("a123s@gmail.com"); message.CC.Add(copy); SmtpClient emailClient = new SmtpClient("***.**.***.**"); message.Attachments.Add(new Attachment(new MemoryStream(results), String.Format("{0}" + matchedBRT + ".pdf", "BRT"))); emailClient.Send(message); } catch (Exception ex) { } } } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload